Mercurial > hg
changeset 38806: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 | b9162ea1b815 |
children | 98df52d5042c |
files | hgext/narrow/narrowchangegroup.py mercurial/changegroup.py |
diffstat | 2 files changed, 6 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/narrow/narrowchangegroup.py Sun Jul 22 15:50:45 2018 +0900 +++ b/hgext/narrow/narrowchangegroup.py Sat Jul 28 14:52:46 2018 -0700 @@ -12,7 +12,6 @@ changegroup, error, extensions, - manifest, mdiff, node, pycompat, @@ -21,15 +20,6 @@ ) def setup(): - def prune(orig, self, revlog, missing, commonrevs): - if isinstance(revlog, manifest.manifestrevlog): - if not self._filematcher.visitdir(revlog._dir[:-1] or '.'): - return [] - - return orig(self, revlog, missing, commonrevs) - - extensions.wrapfunction(changegroup.cg1packer, 'prune', prune) - def generatefiles(orig, self, changedfiles, linknodes, commonrevs, source): changedfiles = list(filter(self._filematcher, changedfiles))
--- 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]