diff -r 8ec186c1ccfe -r 0bf3b5e80d30 mercurial/manifest.py --- a/mercurial/manifest.py Mon Feb 10 21:02:22 2020 -0500 +++ b/mercurial/manifest.py Wed Feb 05 17:13:51 2020 -0500 @@ -545,7 +545,7 @@ if not self.hasdir(fn): match.bad(fn, None) - def matches(self, match): + def _matches(self, match): '''generate a new manifest filtered by the match argument''' if match.always(): return self.copy() @@ -578,8 +578,8 @@ string. ''' if match: - m1 = self.matches(match) - m2 = m2.matches(match) + m1 = self._matches(match) + m2 = m2._matches(match) return m1.diff(m2, clean=clean) return self._lm.diff(m2._lm, clean) @@ -1075,8 +1075,8 @@ def filesnotin(self, m2, match=None): '''Set of files in this manifest that are not in the other''' if match and not match.always(): - m1 = self.matches(match) - m2 = m2.matches(match) + m1 = self._matches(match) + m2 = m2._matches(match) return m1.filesnotin(m2) files = set() @@ -1122,9 +1122,6 @@ def walk(self, match): '''Generates matching file names. - Equivalent to manifest.matches(match).iterkeys(), but without creating - an entirely new manifest. - It also reports nonexistent files by marking them bad with match.bad(). ''' if match.always(): @@ -1167,16 +1164,16 @@ for f in self._dirs[p]._walk(match): yield f - def matches(self, match): - '''generate a new manifest filtered by the match argument''' - if match.always(): - return self.copy() - - return self._matches(match) - def _matches(self, match): '''recursively generate a new manifest filtered by the match argument. ''' + if match.always(): + return self.copy() + return self._matches_inner(match) + + def _matches_inner(self, match): + if match.always(): + return self.copy() visit = match.visitchildrenset(self._dir[:-1]) if visit == b'all': @@ -1207,7 +1204,7 @@ for dir, subm in pycompat.iteritems(self._dirs): if visit and dir[:-1] not in visit: continue - m = subm._matches(match) + m = subm._matches_inner(match) if not m._isempty(): ret._dirs[dir] = m @@ -1231,8 +1228,8 @@ string. ''' if match and not match.always(): - m1 = self.matches(match) - m2 = m2.matches(match) + m1 = self._matches(match) + m2 = m2._matches(match) return m1.diff(m2, clean=clean) result = {} emptytree = treemanifest()