diff -r dd3f857598a0 -r 0cc283f44655 mercurial/manifest.py --- a/mercurial/manifest.py Wed Nov 12 22:20:36 2014 -0800 +++ b/mercurial/manifest.py Wed Oct 22 21:38:30 2014 -0700 @@ -39,6 +39,22 @@ ret._flags[fn] = flags return ret + def matches(self, match): + '''generate a new manifest filtered by the match argument''' + if match.always(): + return self.copy() + + files = match.files() + if (match.matchfn == match.exact or + (not match.anypats() and util.all(fn in self for fn in files))): + return self.intersectfiles(files) + + mf = self.copy() + for fn in mf.keys(): + if not match(fn): + del mf[fn] + return mf + def diff(self, m2): '''Finds changes between the current manifest and m2. The result is returned as a dict with filename as key and values of the form