Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 29057:add26c663aad
debugbundle: handle the --all option for bundle2
author | Mike Hommey <mh@glandium.org> |
---|---|
date | Mon, 18 Apr 2016 17:54:02 +0900 |
parents | 224dd889ecd0 |
children | fc88a942fe8d |
comparison
equal
deleted
inserted
replaced
29056:e2178f7d17c0 | 29057:add26c663aad |
---|---|
2087 return | 2087 return |
2088 | 2088 |
2089 gen = exchange.readbundle(ui, f, bundlepath) | 2089 gen = exchange.readbundle(ui, f, bundlepath) |
2090 if isinstance(gen, bundle2.unbundle20): | 2090 if isinstance(gen, bundle2.unbundle20): |
2091 return _debugbundle2(ui, gen, all=all, **opts) | 2091 return _debugbundle2(ui, gen, all=all, **opts) |
2092 if all: | 2092 _debugchangegroup(ui, gen, all=all, **opts) |
2093 ui.write(("format: id, p1, p2, cset, delta base, len(delta)\n")) | 2093 |
2094 | 2094 def _debugchangegroup(ui, gen, all=None, indent=0, **opts): |
2095 def showchunks(named): | 2095 indent_string = ' ' * indent |
2096 ui.write("\n%s\n" % named) | 2096 if all: |
2097 chain = None | 2097 ui.write("%sformat: id, p1, p2, cset, delta base, len(delta)\n" |
2098 while True: | 2098 % indent_string) |
2099 chunkdata = gen.deltachunk(chain) | 2099 |
2100 if not chunkdata: | 2100 def showchunks(named): |
2101 break | 2101 ui.write("\n%s%s\n" % (indent_string, named)) |
2102 node = chunkdata['node'] | |
2103 p1 = chunkdata['p1'] | |
2104 p2 = chunkdata['p2'] | |
2105 cs = chunkdata['cs'] | |
2106 deltabase = chunkdata['deltabase'] | |
2107 delta = chunkdata['delta'] | |
2108 ui.write("%s %s %s %s %s %s\n" % | |
2109 (hex(node), hex(p1), hex(p2), | |
2110 hex(cs), hex(deltabase), len(delta))) | |
2111 chain = node | |
2112 | |
2113 chunkdata = gen.changelogheader() | |
2114 showchunks("changelog") | |
2115 chunkdata = gen.manifestheader() | |
2116 showchunks("manifest") | |
2117 while True: | |
2118 chunkdata = gen.filelogheader() | |
2119 if not chunkdata: | |
2120 break | |
2121 fname = chunkdata['filename'] | |
2122 showchunks(fname) | |
2123 else: | |
2124 if isinstance(gen, bundle2.unbundle20): | |
2125 raise error.Abort(_('use debugbundle2 for this file')) | |
2126 chunkdata = gen.changelogheader() | |
2127 chain = None | 2102 chain = None |
2128 while True: | 2103 while True: |
2129 chunkdata = gen.deltachunk(chain) | 2104 chunkdata = gen.deltachunk(chain) |
2130 if not chunkdata: | 2105 if not chunkdata: |
2131 break | 2106 break |
2132 node = chunkdata['node'] | 2107 node = chunkdata['node'] |
2133 ui.write("%s\n" % hex(node)) | 2108 p1 = chunkdata['p1'] |
2109 p2 = chunkdata['p2'] | |
2110 cs = chunkdata['cs'] | |
2111 deltabase = chunkdata['deltabase'] | |
2112 delta = chunkdata['delta'] | |
2113 ui.write("%s%s %s %s %s %s %s\n" % | |
2114 (indent_string, hex(node), hex(p1), hex(p2), | |
2115 hex(cs), hex(deltabase), len(delta))) | |
2134 chain = node | 2116 chain = node |
2135 | 2117 |
2136 def _debugbundle2(ui, gen, **opts): | 2118 chunkdata = gen.changelogheader() |
2119 showchunks("changelog") | |
2120 chunkdata = gen.manifestheader() | |
2121 showchunks("manifest") | |
2122 while True: | |
2123 chunkdata = gen.filelogheader() | |
2124 if not chunkdata: | |
2125 break | |
2126 fname = chunkdata['filename'] | |
2127 showchunks(fname) | |
2128 else: | |
2129 if isinstance(gen, bundle2.unbundle20): | |
2130 raise error.Abort(_('use debugbundle2 for this file')) | |
2131 chunkdata = gen.changelogheader() | |
2132 chain = None | |
2133 while True: | |
2134 chunkdata = gen.deltachunk(chain) | |
2135 if not chunkdata: | |
2136 break | |
2137 node = chunkdata['node'] | |
2138 ui.write("%s%s\n" % (indent_string, hex(node))) | |
2139 chain = node | |
2140 | |
2141 def _debugbundle2(ui, gen, all=None, **opts): | |
2137 """lists the contents of a bundle2""" | 2142 """lists the contents of a bundle2""" |
2138 if not isinstance(gen, bundle2.unbundle20): | 2143 if not isinstance(gen, bundle2.unbundle20): |
2139 raise error.Abort(_('not a bundle2 file')) | 2144 raise error.Abort(_('not a bundle2 file')) |
2140 ui.write(('Stream params: %s\n' % repr(gen.params))) | 2145 ui.write(('Stream params: %s\n' % repr(gen.params))) |
2141 for part in gen.iterparts(): | 2146 for part in gen.iterparts(): |
2142 ui.write('%s -- %r\n' % (part.type, repr(part.params))) | 2147 ui.write('%s -- %r\n' % (part.type, repr(part.params))) |
2143 if part.type == 'changegroup': | 2148 if part.type == 'changegroup': |
2144 version = part.params.get('version', '01') | 2149 version = part.params.get('version', '01') |
2145 cg = changegroup.getunbundler(version, part, 'UN') | 2150 cg = changegroup.getunbundler(version, part, 'UN') |
2146 chunkdata = cg.changelogheader() | 2151 _debugchangegroup(ui, cg, all=all, indent=4, **opts) |
2147 chain = None | |
2148 while True: | |
2149 chunkdata = cg.deltachunk(chain) | |
2150 if not chunkdata: | |
2151 break | |
2152 node = chunkdata['node'] | |
2153 ui.write(" %s\n" % hex(node)) | |
2154 chain = node | |
2155 | 2152 |
2156 @command('debugcreatestreamclonebundle', [], 'FILE') | 2153 @command('debugcreatestreamclonebundle', [], 'FILE') |
2157 def debugcreatestreamclonebundle(ui, repo, fname): | 2154 def debugcreatestreamclonebundle(ui, repo, fname): |
2158 """create a stream clone bundle file | 2155 """create a stream clone bundle file |
2159 | 2156 |