D4012: changegroup: inline prune() logic from narrow
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Wed Aug 1 17:04:07 UTC 2018
indygreg created this revision.
Herald added a reviewer: durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
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.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4012
AFFECTED FILES
hgext/narrow/narrowchangegroup.py
mercurial/changegroup.py
CHANGE DETAILS
diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -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]
diff --git a/hgext/narrow/narrowchangegroup.py b/hgext/narrow/narrowchangegroup.py
--- a/hgext/narrow/narrowchangegroup.py
+++ b/hgext/narrow/narrowchangegroup.py
@@ -12,23 +12,13 @@
changegroup,
error,
extensions,
- manifest,
mdiff,
node,
revlog,
util,
)
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))
To: indygreg, durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list