--- a/mercurial/commands.py Mon May 02 15:22:16 2016 -0700
+++ b/mercurial/commands.py Mon Apr 18 17:54:02 2016 +0900
@@ -2089,51 +2089,56 @@
gen = exchange.readbundle(ui, f, bundlepath)
if isinstance(gen, bundle2.unbundle20):
return _debugbundle2(ui, gen, all=all, **opts)
- if all:
- ui.write(("format: id, p1, p2, cset, delta base, len(delta)\n"))
-
- def showchunks(named):
- ui.write("\n%s\n" % named)
- chain = None
- while True:
- chunkdata = gen.deltachunk(chain)
- if not chunkdata:
- break
- node = chunkdata['node']
- p1 = chunkdata['p1']
- p2 = chunkdata['p2']
- cs = chunkdata['cs']
- deltabase = chunkdata['deltabase']
- delta = chunkdata['delta']
- ui.write("%s %s %s %s %s %s\n" %
- (hex(node), hex(p1), hex(p2),
- hex(cs), hex(deltabase), len(delta)))
- chain = node
-
- chunkdata = gen.changelogheader()
- showchunks("changelog")
- chunkdata = gen.manifestheader()
- showchunks("manifest")
- while True:
- chunkdata = gen.filelogheader()
- if not chunkdata:
- break
- fname = chunkdata['filename']
- showchunks(fname)
- else:
- if isinstance(gen, bundle2.unbundle20):
- raise error.Abort(_('use debugbundle2 for this file'))
- chunkdata = gen.changelogheader()
+ _debugchangegroup(ui, gen, all=all, **opts)
+
+def _debugchangegroup(ui, gen, all=None, indent=0, **opts):
+ indent_string = ' ' * indent
+ if all:
+ ui.write("%sformat: id, p1, p2, cset, delta base, len(delta)\n"
+ % indent_string)
+
+ def showchunks(named):
+ ui.write("\n%s%s\n" % (indent_string, named))
chain = None
while True:
chunkdata = gen.deltachunk(chain)
if not chunkdata:
break
node = chunkdata['node']
- ui.write("%s\n" % hex(node))
+ p1 = chunkdata['p1']
+ p2 = chunkdata['p2']
+ cs = chunkdata['cs']
+ deltabase = chunkdata['deltabase']
+ delta = chunkdata['delta']
+ ui.write("%s%s %s %s %s %s %s\n" %
+ (indent_string, hex(node), hex(p1), hex(p2),
+ hex(cs), hex(deltabase), len(delta)))
chain = node
-def _debugbundle2(ui, gen, **opts):
+ chunkdata = gen.changelogheader()
+ showchunks("changelog")
+ chunkdata = gen.manifestheader()
+ showchunks("manifest")
+ while True:
+ chunkdata = gen.filelogheader()
+ if not chunkdata:
+ break
+ fname = chunkdata['filename']
+ showchunks(fname)
+ else:
+ if isinstance(gen, bundle2.unbundle20):
+ raise error.Abort(_('use debugbundle2 for this file'))
+ chunkdata = gen.changelogheader()
+ chain = None
+ while True:
+ chunkdata = gen.deltachunk(chain)
+ if not chunkdata:
+ break
+ node = chunkdata['node']
+ ui.write("%s%s\n" % (indent_string, hex(node)))
+ chain = node
+
+def _debugbundle2(ui, gen, all=None, **opts):
"""lists the contents of a bundle2"""
if not isinstance(gen, bundle2.unbundle20):
raise error.Abort(_('not a bundle2 file'))
@@ -2143,15 +2148,7 @@
if part.type == 'changegroup':
version = part.params.get('version', '01')
cg = changegroup.getunbundler(version, part, 'UN')
- chunkdata = cg.changelogheader()
- chain = None
- while True:
- chunkdata = cg.deltachunk(chain)
- if not chunkdata:
- break
- node = chunkdata['node']
- ui.write(" %s\n" % hex(node))
- chain = node
+ _debugchangegroup(ui, cg, all=all, indent=4, **opts)
@command('debugcreatestreamclonebundle', [], 'FILE')
def debugcreatestreamclonebundle(ui, repo, fname):