D4224: changegroup: move node sorting into deltagroup()
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Wed Aug 22 12:37:00 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG2646b8d66b7b: changegroup: move node sorting into deltagroup() (authored by indygreg, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4224?vs=10218&id=10509
REVISION DETAIL
https://phab.mercurial-scm.org/D4224
AFFECTED FILES
mercurial/changegroup.py
CHANGE DETAILS
diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -771,7 +771,8 @@
ellipsis=True,
)
-def deltagroup(repo, revs, store, ischangelog, lookup, forcedeltaparentprev,
+def deltagroup(repo, store, nodes, ischangelog, lookup, forcedeltaparentprev,
+ allowreorder,
units=None,
ellipses=False, clrevtolocalrev=None, fullclnodes=None,
precomputedellipsis=None):
@@ -782,7 +783,7 @@
If units is not None, progress detail will be generated, units specifies
the type of revlog that is touched (changelog, manifest, etc.).
"""
- if not revs:
+ if not nodes:
return
# We perform two passes over the revisions whose data we will emit.
@@ -797,6 +798,17 @@
cl = repo.changelog
+ if ischangelog:
+ # Changelog doesn't benefit from reordering revisions. So send
+ # out revisions in store order.
+ # TODO the API would be cleaner if this were controlled by the
+ # store producing the deltas.
+ revs = sorted(cl.rev(n) for n in nodes)
+ elif ellipses:
+ revs = _sortnodesellipsis(store, nodes, cl, lookup)
+ else:
+ revs = _sortnodesnormal(store, nodes, allowreorder)
+
# In the first pass, collect info about the deltas we'll be
# generating.
requests = []
@@ -1099,20 +1111,18 @@
return x
- # Changelog doesn't benefit from reordering revisions. So send out
- # revisions in store order.
- revs = sorted(cl.rev(n) for n in nodes)
-
state = {
'clrevorder': clrevorder,
'mfs': mfs,
'changedfiles': changedfiles,
'clrevtomanifestrev': clrevtomanifestrev,
}
gen = deltagroup(
- self._repo, revs, cl, True, lookupcl,
+ self._repo, cl, nodes, True, lookupcl,
self._forcedeltaparentprev,
+ # Reorder settings are currently ignored for changelog.
+ True,
ellipses=self._ellipses,
units=_('changesets'),
clrevtolocalrev={},
@@ -1129,7 +1139,6 @@
change what is sent based in pulls vs pushes, etc.
"""
repo = self._repo
- cl = repo.changelog
mfl = repo.manifestlog
dirlog = mfl._revlog.dirlog
tmfnodes = {'': mfs}
@@ -1192,16 +1201,9 @@
lookupfn = makelookupmflinknode(dir, nodes)
- if self._ellipses:
- revs = _sortnodesellipsis(store, prunednodes, cl,
- lookupfn)
- else:
- revs = _sortnodesnormal(store, prunednodes,
- self._reorder)
-
deltas = deltagroup(
- self._repo, revs, store, False, lookupfn,
- self._forcedeltaparentprev,
+ self._repo, store, prunednodes, False, lookupfn,
+ self._forcedeltaparentprev, self._reorder,
ellipses=self._ellipses,
units=_('manifests'),
clrevtolocalrev=clrevtolocalrev,
@@ -1260,7 +1262,6 @@
linknodes = normallinknodes
repo = self._repo
- cl = repo.changelog
progress = repo.ui.makeprogress(_('bundling'), unit=_('files'),
total=len(changedfiles))
for i, fname in enumerate(sorted(changedfiles)):
@@ -1284,18 +1285,11 @@
if not filenodes:
continue
- if self._ellipses:
- revs = _sortnodesellipsis(filerevlog, filenodes,
- cl, lookupfilelog)
- else:
- revs = _sortnodesnormal(filerevlog, filenodes,
- self._reorder)
-
progress.update(i + 1, item=fname)
deltas = deltagroup(
- self._repo, revs, filerevlog, False, lookupfilelog,
- self._forcedeltaparentprev,
+ self._repo, filerevlog, filenodes, False, lookupfilelog,
+ self._forcedeltaparentprev, self._reorder,
ellipses=self._ellipses,
clrevtolocalrev=clrevtolocalrev,
fullclnodes=self._fullclnodes,
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list