Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 30501:a87e469201f9
debugcommands: move 'debugbundle' in the new module
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 17 Aug 2016 21:07:22 -0700 |
parents | 13251523b20c |
children | 6da030496667 |
comparison
equal
deleted
inserted
replaced
30500:fc0cfe6c87d7 | 30501:a87e469201f9 |
---|---|
1865 Returns 0 on success, 1 if errors are encountered. | 1865 Returns 0 on success, 1 if errors are encountered. |
1866 """ | 1866 """ |
1867 with repo.wlock(False): | 1867 with repo.wlock(False): |
1868 return cmdutil.copy(ui, repo, pats, opts) | 1868 return cmdutil.copy(ui, repo, pats, opts) |
1869 | 1869 |
1870 @command('debugbundle', | |
1871 [('a', 'all', None, _('show all details')), | |
1872 ('', 'spec', None, _('print the bundlespec of the bundle'))], | |
1873 _('FILE'), | |
1874 norepo=True) | |
1875 def debugbundle(ui, bundlepath, all=None, spec=None, **opts): | |
1876 """lists the contents of a bundle""" | |
1877 with hg.openpath(ui, bundlepath) as f: | |
1878 if spec: | |
1879 spec = exchange.getbundlespec(ui, f) | |
1880 ui.write('%s\n' % spec) | |
1881 return | |
1882 | |
1883 gen = exchange.readbundle(ui, f, bundlepath) | |
1884 if isinstance(gen, bundle2.unbundle20): | |
1885 return _debugbundle2(ui, gen, all=all, **opts) | |
1886 _debugchangegroup(ui, gen, all=all, **opts) | |
1887 | |
1888 def _debugchangegroup(ui, gen, all=None, indent=0, **opts): | |
1889 indent_string = ' ' * indent | |
1890 if all: | |
1891 ui.write(("%sformat: id, p1, p2, cset, delta base, len(delta)\n") | |
1892 % indent_string) | |
1893 | |
1894 def showchunks(named): | |
1895 ui.write("\n%s%s\n" % (indent_string, named)) | |
1896 chain = None | |
1897 for chunkdata in iter(lambda: gen.deltachunk(chain), {}): | |
1898 node = chunkdata['node'] | |
1899 p1 = chunkdata['p1'] | |
1900 p2 = chunkdata['p2'] | |
1901 cs = chunkdata['cs'] | |
1902 deltabase = chunkdata['deltabase'] | |
1903 delta = chunkdata['delta'] | |
1904 ui.write("%s%s %s %s %s %s %s\n" % | |
1905 (indent_string, hex(node), hex(p1), hex(p2), | |
1906 hex(cs), hex(deltabase), len(delta))) | |
1907 chain = node | |
1908 | |
1909 chunkdata = gen.changelogheader() | |
1910 showchunks("changelog") | |
1911 chunkdata = gen.manifestheader() | |
1912 showchunks("manifest") | |
1913 for chunkdata in iter(gen.filelogheader, {}): | |
1914 fname = chunkdata['filename'] | |
1915 showchunks(fname) | |
1916 else: | |
1917 if isinstance(gen, bundle2.unbundle20): | |
1918 raise error.Abort(_('use debugbundle2 for this file')) | |
1919 chunkdata = gen.changelogheader() | |
1920 chain = None | |
1921 for chunkdata in iter(lambda: gen.deltachunk(chain), {}): | |
1922 node = chunkdata['node'] | |
1923 ui.write("%s%s\n" % (indent_string, hex(node))) | |
1924 chain = node | |
1925 | |
1926 def _debugbundle2(ui, gen, all=None, **opts): | |
1927 """lists the contents of a bundle2""" | |
1928 if not isinstance(gen, bundle2.unbundle20): | |
1929 raise error.Abort(_('not a bundle2 file')) | |
1930 ui.write(('Stream params: %s\n' % repr(gen.params))) | |
1931 for part in gen.iterparts(): | |
1932 ui.write('%s -- %r\n' % (part.type, repr(part.params))) | |
1933 if part.type == 'changegroup': | |
1934 version = part.params.get('version', '01') | |
1935 cg = changegroup.getunbundler(version, part, 'UN') | |
1936 _debugchangegroup(ui, cg, all=all, indent=4, **opts) | |
1937 | |
1938 @command('debugcreatestreamclonebundle', [], 'FILE') | 1870 @command('debugcreatestreamclonebundle', [], 'FILE') |
1939 def debugcreatestreamclonebundle(ui, repo, fname): | 1871 def debugcreatestreamclonebundle(ui, repo, fname): |
1940 """create a stream clone bundle file | 1872 """create a stream clone bundle file |
1941 | 1873 |
1942 Stream bundles are special bundles that are essentially archives of | 1874 Stream bundles are special bundles that are essentially archives of |