diff -r b9162ea1b815 -r 5742d0428ed9 mercurial/changegroup.py --- a/mercurial/changegroup.py Sun Jul 22 15:50:45 2018 +0900 +++ b/mercurial/changegroup.py Sat Jul 28 14:52:46 2018 -0700 @@ -21,6 +21,7 @@ from . import ( dagutil, error, + manifest, match as matchmod, mdiff, phases, @@ -589,6 +590,11 @@ # filter any nodes that claim to be part of the known set def prune(self, revlog, missing, commonrevs): + # TODO this violates storage abstraction for manifests. + if isinstance(revlog, manifest.manifestrevlog): + if not self._filematcher.visitdir(revlog._dir[:-1] or '.'): + return [] + rr, rl = revlog.rev, revlog.linkrev return [n for n in missing if rl(rr(n)) not in commonrevs]