Mercurial > public > mercurial-scm > hg-stable
diff mercurial/changegroup.py @ 38846:5742d0428ed9
changegroup: inline prune() logic from narrow
prune() needs to ellide manifests that aren't part of the narrow
matcher.
The code is violating storage abstractions, so a comment has been
added. Keep in mind the impetus for moving this code to core
is so changegroup code can be refactored to be storage agnostic.
Differential Revision: https://phab.mercurial-scm.org/D4012
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 28 Jul 2018 14:52:46 -0700 |
parents | 1d01cf0416a5 |
children | a232e6744ba3 |
line wrap: on
line diff
--- 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]