From patchwork Sat Oct 3 04:10:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1, of, 6] grep: add option for logcmdutil.makewalker() to not filter revs by file pats From: Yuya Nishihara X-Patchwork-Id: 47369 Message-Id: <14815a48ad0acf0e4e4d.1601698205@mimosa> To: mercurial-devel@mercurial-scm.org Date: Sat, 03 Oct 2020 13:10:05 +0900 # HG changeset patch # User Yuya Nishihara # Date 1599730801 -32400 # Thu Sep 10 18:40:01 2020 +0900 # Node ID 14815a48ad0acf0e4e4da658c4cca0bee459351d # Parent ede4a1bf14bdd101e0760db8b8c7e8d65865050e grep: add option for logcmdutil.makewalker() to not filter revs by file pats This is needed to implement "grep --all-files". diff --git a/mercurial/logcmdutil.py b/mercurial/logcmdutil.py --- a/mercurial/logcmdutil.py +++ b/mercurial/logcmdutil.py @@ -711,6 +711,10 @@ class walkopts(object): # include revisions where files were removed force_changelog_traversal = attr.ib(default=False) # type: bool + # filter revisions by file patterns, which should be disabled only if + # you want to include revisions where files were unmodified + filter_revisions_by_pats = attr.ib(default=True) # type: bool + # sort revisions prior to traversal: 'desc', 'topo', or None sort_revisions = attr.ib(default=None) # type: Optional[bytes] @@ -902,7 +906,7 @@ def _makerevset(repo, wopts, slowpath): b'user': wopts.users, } - if slowpath: + if wopts.filter_revisions_by_pats and slowpath: # See walkchangerevs() slow path. # # pats/include/exclude cannot be represented as separate @@ -919,7 +923,7 @@ def _makerevset(repo, wopts, slowpath): for p in wopts.exclude_pats: matchargs.append(b'x:' + p) opts[b'_matchfiles'] = matchargs - elif not wopts.follow: + elif wopts.filter_revisions_by_pats and not wopts.follow: opts[b'_patslog'] = list(wopts.pats) expr = []