[PATCH 2 of 2] bundlerepo: add support for treemanifests in cg3 bundles

Augie Fackler raf at durin42.com
Thu Aug 4 14:17:46 EDT 2016


# HG changeset patch
# User Augie Fackler <augie at google.com>
# Date 1470334433 14400
#      Thu Aug 04 14:13:53 2016 -0400
# Node ID 781e56c61c17a07164cd7cbcd4b319ce2ded511f
# Parent  c6da11db73e97aceabcc85c9f5bb893643bf01a7
bundlerepo: add support for treemanifests in cg3 bundles

diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -190,8 +190,8 @@ class bundlechangelog(bundlerevlog, chan
             self.filteredrevs = oldfilter
 
 class bundlemanifest(bundlerevlog, manifest.manifest):
-    def __init__(self, opener, bundle, linkmapper):
-        manifest.manifest.__init__(self, opener)
+    def __init__(self, opener, bundle, linkmapper, dir=''):
+        manifest.manifest.__init__(self, opener, dir=dir)
         bundlerevlog.__init__(self, opener, self.indexfile, bundle,
                               linkmapper)
 
@@ -332,7 +332,12 @@ class bundlerepository(localrepo.localre
         # XXX: hack to work with changegroup3, but we still don't handle
         # tree manifests correctly
         if self.bundle.version == "03":
-            self.bundle.filelogheader()
+            dirheader = self.bundle.filelogheader()
+            while dirheader:
+                d = dirheader["filename"]
+                self.bundledirlogs = bundlemanifest(
+                    self.svfs, self.bundle, linkmapper, dir=d)
+                dirheader = self.bundle.filelogheader()
         self.filestart = self.bundle.tell()
         return m
 
diff --git a/tests/test-treemanifest.t b/tests/test-treemanifest.t
--- a/tests/test-treemanifest.t
+++ b/tests/test-treemanifest.t
@@ -313,6 +313,15 @@ Stripping and recovering changes should 
      rev    offset  length  delta linkrev nodeid       p1           p2
        0         0     127     -1       4 064927a0648a 000000000000 000000000000
        1       127     111      0       5 25ecb8cb8618 000000000000 000000000000
+  $ hg incoming --traceback .hg/strip-backup/*
+  comparing with .hg/strip-backup/*-backup.hg (glob)
+  searching for changes
+  changeset:   6:51cfd7b1e13b
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     modify dir1/a
+  
   $ hg unbundle -q .hg/strip-backup/*
   $ hg debugindex --dir dir1
      rev    offset  length  delta linkrev nodeid       p1           p2


More information about the Mercurial-devel mailing list