Mercurial > public > mercurial-scm > hg
diff mercurial/commands.py @ 26531:15ce78517d4b
bundle: extend the format of --type to support version and compression
We had some basic undocumented support for uncompressed bundle2 support. We now
have an official extensible syntax to specify both format type and compression
(eg: bzip2-v2).
In practice, this changeset introduce the 'v1' and 'v2' identifier to make it
possible to combine format and compression. The default format is still 'v1'.
We'll care about picking 'v1' or 'v2' in regard with general delta in the next
changesets.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 01 Oct 2015 19:16:00 -0700 |
parents | 77c13f3c01ca |
children | 3e61b325e79a |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Oct 07 20:19:20 2015 +0100 +++ b/mercurial/commands.py Thu Oct 01 19:16:00 2015 -0700 @@ -1219,9 +1219,11 @@ parameters. To create a bundle containing all changesets, use -a/--all (or --base null). - You can change compression method with the -t/--type option. - The available compression methods are: none, bzip2, and - gzip (by default, bundles are compressed using bzip2). + You can change bundle format with the -t/--type option. You can + specify a compression, a bundle version or both using a dash + (comp-version). The available compression methods are: none, bzip2, + and gzip (by default, bundles are compressed using bzip2). The + available format are: v1, v2 (default to v1). The bundle file can then be transferred using conventional means and applied to another repository with the unbundle or pull @@ -1238,7 +1240,7 @@ revs = scmutil.revrange(repo, opts['rev']) bundletype = opts.get('type', 'bzip2').lower() - bundletype = cmdutil.parsebundletype(bundletype) + cgversion, bcompression = cmdutil.parsebundletype(repo, bundletype) if opts.get('all'): base = ['null'] @@ -1253,7 +1255,8 @@ common = [repo.lookup(rev) for rev in base] heads = revs and map(repo.lookup, revs) or revs cg = changegroup.getchangegroup(repo, 'bundle', heads=heads, - common=common, bundlecaps=bundlecaps) + common=common, bundlecaps=bundlecaps, + version=cgversion) outgoing = None else: dest = ui.expandpath(dest or 'default-push', dest or 'default') @@ -1266,12 +1269,22 @@ force=opts.get('force'), portable=True) cg = changegroup.getlocalchangegroup(repo, 'bundle', outgoing, - bundlecaps) + bundlecaps, version=cgversion) if not cg: scmutil.nochangesfound(ui, repo, outgoing and outgoing.excluded) return 1 - changegroup.writebundle(ui, cg, fname, bundletype) + if cgversion == '01': #bundle1 + if bcompression is None: + bcompression = 'UN' + bversion = 'HG10' + bcompression + bcompression = None + else: + assert cgversion == '02' + bversion = 'HG20' + + + changegroup.writebundle(ui, cg, fname, bversion, compression=bcompression) @command('cat', [('o', 'output', '',