--- a/mercurial/commands.py Tue Mar 22 09:22:21 2011 +0100
+++ b/mercurial/commands.py Tue Mar 22 09:22:29 2011 +0100
@@ -1230,6 +1230,44 @@
flags = repo.known([bin(s) for s in ids])
ui.write("%s\n" % ("".join([f and "1" or "0" for f in flags])))
+def debugbundle(ui, bundlepath, all=None, **opts):
+ """lists the contents of a bundle"""
+ f = url.open(ui, bundlepath)
+ try:
+ gen = changegroup.readbundle(f, bundlepath)
+ if all:
+ ui.write("format: id, p1, p2, cset, len(delta)\n")
+
+ def showchunks(named):
+ ui.write("\n%s\n" % named)
+ while 1:
+ chunkdata = gen.parsechunk()
+ if not chunkdata:
+ break
+ node = chunkdata['node']
+ p1 = chunkdata['p1']
+ p2 = chunkdata['p2']
+ cs = chunkdata['cs']
+ delta = chunkdata['data']
+ ui.write("%s %s %s %s %s\n" % (hex(node), hex(p1), hex(p2), hex(cs), len(delta)))
+
+ showchunks("changelog")
+ showchunks("manifest")
+ while 1:
+ fname = gen.chunk()
+ if not fname:
+ break
+ showchunks(fname)
+ else:
+ while 1:
+ chunkdata = gen.parsechunk()
+ if not chunkdata:
+ break
+ node = chunkdata['node']
+ ui.write("%s\n" % hex(node))
+ finally:
+ f.close()
+
def debugpushkey(ui, repopath, namespace, *keyinfo):
'''access the pushkey key/value protocol
@@ -4432,6 +4470,11 @@
('n', 'new-file', None, _('add new file at each rev')),
],
_('[OPTION]... TEXT')),
+ "debugbundle":
+ (debugbundle,
+ [('a', 'all', None, _('show all details')),
+ ],
+ _('FILE')),
"debugcheckstate": (debugcheckstate, [], ''),
"debugcommands": (debugcommands, [], _('[COMMAND]')),
"debugcomplete":
@@ -4824,6 +4867,6 @@
norepo = ("clone init version help debugcommands debugcomplete"
" debugdate debuginstall debugfsinfo debugpushkey debugwireargs"
- " debugknown")
+ " debugknown debugbundle")
optionalrepo = ("identify paths serve showconfig debugancestor debugdag"
" debugdata debugindex debugindexdot")