comparison mercurial/scmutil.py @ 40087:1d09ba0d2ed3

narrow: move remaining narrow-limited dirstate walks to core In most places we now filter at a higher level (the context object), but there are few places that relied on the dirstate walk to be filtered by the narrowspec. The important cases are those used by `hg add` and `hg addremove`. This patch updates them to pass in a matcher instead of relying on the dirstate to do the filtering. The dirstate filtering is also dropped in narrowdirstate.py. Not always filtering in the dirstate should be useful for a future `hg status --include-outside-narrow` option. These places now end up doing an unrestricted dirstate walk after this patch: * debugfileset * perfwalk * sparse (but restricted to sparse config) * largefiles I'll let anyone who cares about these cases adapt them to work with narrow if necessary. Differential Revision: https://phab.mercurial-scm.org/D4901
author Martin von Zweigbergk <martinvonz@google.com>
date Mon, 01 Oct 2018 14:31:15 -0700
parents ca9d0c93acea
children c554dc0cc16e
comparison
equal deleted inserted replaced
40086:41fcdfe3bfeb 40087:1d09ba0d2ed3
1096 added, unknown, deleted, removed, forgotten = [], [], [], [], [] 1096 added, unknown, deleted, removed, forgotten = [], [], [], [], []
1097 audit_path = pathutil.pathauditor(repo.root, cached=True) 1097 audit_path = pathutil.pathauditor(repo.root, cached=True)
1098 1098
1099 ctx = repo[None] 1099 ctx = repo[None]
1100 dirstate = repo.dirstate 1100 dirstate = repo.dirstate
1101 matcher = repo.narrowmatch(matcher, includeexact=True)
1101 walkresults = dirstate.walk(matcher, subrepos=sorted(ctx.substate), 1102 walkresults = dirstate.walk(matcher, subrepos=sorted(ctx.substate),
1102 unknown=True, ignored=False, full=False) 1103 unknown=True, ignored=False, full=False)
1103 for abs, st in walkresults.iteritems(): 1104 for abs, st in walkresults.iteritems():
1104 dstate = dirstate[abs] 1105 dstate = dirstate[abs]
1105 if dstate == '?' and audit_path.check(abs): 1106 if dstate == '?' and audit_path.check(abs):