D4060: changegroup: move ellipsisdata() from narrow

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Thu Aug 2 21:15:46 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
  This is a pretty straightforward copy of the function.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D4060

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
@@ -14,6 +14,7 @@
 from .i18n import _
 from .node import (
     hex,
+    nullid,
     nullrev,
     short,
 )
@@ -26,6 +27,7 @@
     mdiff,
     phases,
     pycompat,
+    revlog,
     util,
 )
 
@@ -495,6 +497,21 @@
             return d
         return readexactly(self._fh, n)
 
+def ellipsisdata(packer, rev, revlog_, p1, p2, data, linknode):
+    n = revlog_.node(rev)
+    p1n, p2n = revlog_.node(p1), revlog_.node(p2)
+    flags = revlog_.flags(rev)
+    flags |= revlog.REVIDX_ELLIPSIS
+    meta = packer.builddeltaheader(
+        n, p1n, p2n, nullid, linknode, flags)
+    # TODO: try and actually send deltas for ellipsis data blocks
+    diffheader = mdiff.trivialdiffheader(len(data))
+    l = len(meta) + len(diffheader) + len(data)
+    return ''.join((chunkheader(l),
+                    meta,
+                    diffheader,
+                    data))
+
 class cg1packer(object):
     deltaheader = _CHANGEGROUPV1_DELTA_HEADER
     version = '01'
diff --git a/hgext/narrow/narrowchangegroup.py b/hgext/narrow/narrowchangegroup.py
--- a/hgext/narrow/narrowchangegroup.py
+++ b/hgext/narrow/narrowchangegroup.py
@@ -12,10 +12,8 @@
     changegroup,
     error,
     extensions,
-    mdiff,
     node,
     pycompat,
-    revlog,
     util,
 )
 
@@ -54,21 +52,6 @@
     extensions.wrapfunction(
         changegroup.cg1packer, 'generatefiles', generatefiles)
 
-    def ellipsisdata(packer, rev, revlog_, p1, p2, data, linknode):
-        n = revlog_.node(rev)
-        p1n, p2n = revlog_.node(p1), revlog_.node(p2)
-        flags = revlog_.flags(rev)
-        flags |= revlog.REVIDX_ELLIPSIS
-        meta = packer.builddeltaheader(
-            n, p1n, p2n, node.nullid, linknode, flags)
-        # TODO: try and actually send deltas for ellipsis data blocks
-        diffheader = mdiff.trivialdiffheader(len(data))
-        l = len(meta) + len(diffheader) + len(data)
-        return ''.join((changegroup.chunkheader(l),
-                        meta,
-                        diffheader,
-                        data))
-
     def close(orig, self):
         getattr(self, 'clrev_to_localrev', {}).clear()
         if getattr(self, 'next_clrev_to_localrev', {}):
@@ -330,7 +313,7 @@
         else:
             p1, p2 = sorted(local(p) for p in linkparents)
         n = revlog.node(rev)
-        yield ellipsisdata(
+        yield changegroup.ellipsisdata(
             self, rev, revlog, p1, p2, revlog.revision(n), linknode)
     extensions.wrapfunction(changegroup.cg1packer, 'revchunk', revchunk)
 



To: indygreg, durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list