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