[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