Skip to content
Snippets Groups Projects
Commit 5742d042 authored by Gregory Szorc's avatar Gregory Szorc
Browse files

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
parent b9162ea1
No related branches found
No related tags found
No related merge requests found
......@@ -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))
......
......@@ -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]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment