Mercurial > public > mercurial-scm > hg
diff mercurial/commands.py @ 13724:fe57046e9448
commands: add debugbundle command
Lists ids contained in a bundle file. Useful for testing bundle-related commands.
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Tue, 22 Mar 2011 09:22:29 +0100 |
parents | e615765fdcc7 |
children | ce47a0c10224 |
line wrap: on
line diff
--- 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")