D4805: storageutil: pass nodes into emitrevisions()
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Sat Sep 29 00:19:26 UTC 2018
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
The main emitrevisions() uses nodes. So it makes sense to use
nodes for the helper API.
Not bothering with API since this function was introduced a few
commits ago.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4805
AFFECTED FILES
mercurial/revlog.py
mercurial/utils/storageutil.py
CHANGE DETAILS
diff --git a/mercurial/utils/storageutil.py b/mercurial/utils/storageutil.py
--- a/mercurial/utils/storageutil.py
+++ b/mercurial/utils/storageutil.py
@@ -17,6 +17,7 @@
nullrev,
)
from .. import (
+ dagop,
error,
mdiff,
pycompat,
@@ -264,8 +265,8 @@
return strippoint, brokenrevs
-def emitrevisions(store, revs, resultcls, deltaparentfn=None, candeltafn=None,
- rawsizefn=None, revdifffn=None, flagsfn=None,
+def emitrevisions(store, nodes, nodesorder, resultcls, deltaparentfn=None,
+ candeltafn=None, rawsizefn=None, revdifffn=None, flagsfn=None,
sendfulltext=False,
revisiondata=False, assumehaveparentrevisions=False,
deltaprevious=False):
@@ -277,8 +278,8 @@
``store``
Object conforming to ``ifilestorage`` interface.
- ``revs``
- List of integer revision numbers whose data to emit.
+ ``nodes``
+ List of revision nodes whose data to emit.
``resultcls``
A type implementing the ``irevisiondelta`` interface that will be
@@ -322,13 +323,23 @@
``sendfulltext``
Whether to send fulltext revisions instead of deltas, if allowed.
+ ``nodesorder``
``revisiondata``
``assumehaveparentrevisions``
``deltaprevious``
See ``ifiledata.emitrevisions()`` interface documentation.
"""
fnode = store.node
+ frev = store.rev
+
+ if nodesorder == 'nodes':
+ revs = [frev(n) for n in nodes]
+ elif nodesorder == 'storage':
+ revs = sorted(frev(n) for n in nodes)
+ else:
+ revs = set(frev(n) for n in nodes)
+ revs = dagop.linearize(revs, store.parentrevs)
prevrev = None
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -2187,19 +2187,8 @@
if nodesorder is None and not self._generaldelta:
nodesorder = 'storage'
- frev = self.rev
-
- if nodesorder == 'nodes':
- revs = [frev(n) for n in nodes]
- elif nodesorder == 'storage':
- revs = sorted(frev(n) for n in nodes)
- else:
- assert self._generaldelta
- revs = set(frev(n) for n in nodes)
- revs = dagop.linearize(revs, self.parentrevs)
-
return storageutil.emitrevisions(
- self, revs, revlogrevisiondelta,
+ self, nodes, nodesorder, revlogrevisiondelta,
deltaparentfn=self.deltaparent,
candeltafn=self.candelta,
rawsizefn=self.rawsize,
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list