Mercurial > hg-stable
changeset 14163:38184a72d793
debugbuilddag: use memctx for speed
This drops the options to run arbitrary shell commands within
commits and the option to create a file that gets appended to
in every revision. It now supports to not write file data at
all, which is very fast for generating a pure 00changelog.i
(useful for discovery tests, for instance).
Timings for 1000 linear nodes:
* Old `hg debugbuilddag -o '+1000'` took 4.5 secs.
* New `hg debugbuilddag -o '+1000'` takes 2 secs.
* New `hg debugbuilddag '+1000'` takes 0.8 secs.
(The last one creates only 00changelog.i).
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Mon, 02 May 2011 19:21:30 +0200 |
parents | 301725c3df9a |
children | cb98fed52495 |
files | mercurial/commands.py tests/test-debugbuilddag.t tests/test-debugcomplete.t tests/test-getbundle.t |
diffstat | 4 files changed, 289 insertions(+), 280 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Mon May 02 19:20:29 2011 +0200 +++ b/mercurial/commands.py Mon May 02 19:21:30 2011 +0200 @@ -14,7 +14,7 @@ import archival, changegroup, cmdutil, sshserver, hbisect, hgweb, hgweb.server import merge as mergemod import minirst, revset, templatefilters -import dagparser +import dagparser, context, simplemerge # Commands start here, listed alphabetically @@ -962,7 +962,6 @@ def debugbuilddag(ui, repo, text, mergeable_file=False, - appended_file=False, overwritten_file=False, new_file=False): """builds a repo with a given dag from scratch in the current empty repo @@ -979,8 +978,6 @@ - "/p2" is a merge of the preceding node and p2 - ":tag" defines a local tag for the preceding node - "@branch" sets the named branch for subsequent nodes - - "!command" runs the command using your shell - - "!!my command\\n" is like "!", but to the end of the line - "#...\\n" is a comment up to the end of the line Whitespace between the above elements is ignored. @@ -994,28 +991,12 @@ All string valued-elements are either strictly alphanumeric, or must be enclosed in double quotes ("..."), with "\\" as escape character. - - Note that the --overwritten-file and --appended-file options imply the - use of "HGMERGE=internal:local" during DAG buildup. """ - if not (mergeable_file or appended_file or overwritten_file or new_file): - raise util.Abort(_('need at least one of -m, -a, -o, -n')) - - if len(repo.changelog) > 0: + cl = repo.changelog + if len(cl) > 0: raise util.Abort(_('repository is not empty')) - if overwritten_file or appended_file: - # we don't want to fail in merges during buildup - os.environ['HGMERGE'] = 'internal:local' - - def writefile(fname, text, fmode="wb"): - f = open(fname, fmode) - try: - f.write(text) - finally: - f.close() - if mergeable_file: linesperrev = 2 # determine number of revs in DAG @@ -1024,58 +1005,95 @@ if type == 'n': n += 1 # make a file with k lines per rev - writefile("mf", "\n".join(str(i) for i in xrange(0, n * linesperrev)) - + "\n") - - at = -1 - atbranch = 'default' - for type, data in dagparser.parsedag(text): - if type == 'n': - ui.status('node %s\n' % str(data)) - id, ps = data - p1 = ps[0] - if p1 != at: - update(ui, repo, node=str(p1), clean=True) - at = p1 - if repo.dirstate.branch() != atbranch: - branch(ui, repo, atbranch, force=True) - if len(ps) > 1: - p2 = ps[1] - merge(ui, repo, node=p2) - - if mergeable_file: - f = open("mf", "rb+") - try: - lines = f.read().split("\n") - lines[id * linesperrev] += " r%i" % id - f.seek(0) - f.write("\n".join(lines)) - finally: - f.close() - - if appended_file: - writefile("af", "r%i\n" % id, "ab") - - if overwritten_file: - writefile("of", "r%i\n" % id) - - if new_file: - writefile("nf%i" % id, "r%i\n" % id) - - commit(ui, repo, addremove=True, message="r%i" % id, date=(id, 0)) - at = id - elif type == 'l': - id, name = data - ui.status('tag %s\n' % name) - tag(ui, repo, name, local=True) - elif type == 'a': - ui.status('branch %s\n' % data) - atbranch = data - elif type in 'cC': - r = util.system(data, cwd=repo.root) - if r: - desc, r = util.explain_exit(r) - raise util.Abort(_('%s command %s') % (data, desc)) + initialmergedlines = [str(i) for i in xrange(0, n * linesperrev)] + initialmergedlines.append("") + + tags = [] + + tr = repo.transaction("builddag") + try: + + at = -1 + atbranch = 'default' + nodeids = [] + for type, data in dagparser.parsedag(text): + if type == 'n': + ui.note('node %s\n' % str(data)) + id, ps = data + + files = [] + fctxs = {} + + p2 = None + if mergeable_file: + fn = "mf" + p1 = repo[ps[0]] + if len(ps) > 1: + p2 = repo[ps[1]] + pa = p1.ancestor(p2) + base, local, other = [x[fn].data() for x in pa, p1, p2] + m3 = simplemerge.Merge3Text(base, local, other) + ml = [l.strip() for l in m3.merge_lines()] + ml.append("") + elif at > 0: + ml = p1[fn].data().split("\n") + else: + ml = initialmergedlines + ml[id * linesperrev] += " r%i" % id + mergedtext = "\n".join(ml) + files.append(fn) + fctxs[fn] = context.memfilectx(fn, mergedtext) + + if overwritten_file: + fn = "of" + files.append(fn) + fctxs[fn] = context.memfilectx(fn, "r%i\n" % id) + + if new_file: + fn = "nf%i" % id + files.append(fn) + fctxs[fn] = context.memfilectx(fn, "r%i\n" % id) + if len(ps) > 1: + if not p2: + p2 = repo[ps[1]] + for fn in p2: + if fn.startswith("nf"): + files.append(fn) + fctxs[fn] = p2[fn] + + def fctxfn(repo, cx, path): + return fctxs.get(path) + + if len(ps) == 0 or ps[0] < 0: + pars = [None, None] + elif len(ps) == 1: + pars = [nodeids[ps[0]], None] + else: + pars = [nodeids[p] for p in ps] + cx = context.memctx(repo, pars, "r%i" % id, files, fctxfn, + date=(id, 0), + user="debugbuilddag", + extra={'branch': atbranch}) + nodeid = repo.commitctx(cx) + nodeids.append(nodeid) + at = id + elif type == 'l': + id, name = data + ui.note('tag %s\n' % name) + tags.append("%s %s\n" % (hex(repo.changelog.node(id)), name)) + elif type == 'a': + ui.note('branch %s\n' % data) + atbranch = data + tr.close() + finally: + tr.release() + + if tags: + tagsf = repo.opener("localtags", "w") + try: + tagsf.write("".join(tags)) + finally: + tagsf.close() def debugcommands(ui, cmd='', *args): """list all available commands and options""" @@ -4467,7 +4485,6 @@ "debugbuilddag": (debugbuilddag, [('m', 'mergeable-file', None, _('add single file mergeable changes')), - ('a', 'appended-file', None, _('add single file all revs append to')), ('o', 'overwritten-file', None, _('add single file all revs overwrite')), ('n', 'new-file', None, _('add new file at each rev')), ],
--- a/tests/test-debugbuilddag.t Mon May 02 19:20:29 2011 +0200 +++ b/tests/test-debugbuilddag.t Mon May 02 19:21:30 2011 +0200 @@ -1,12 +1,16 @@ $ echo "[extensions]" >> $HGRCPATH $ echo "graphlog=" >> $HGRCPATH -overwritten and appended files +plain $ rm -rf repo $ hg init repo $ cd repo - $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' -q -oa + $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' +tags + $ cat .hg/localtags + 66f7d451a68b85ed82ff5fcc254daf50c74144bd f + bebd167eb94d257ace0e814aeb98e6972ed2970d p2 dag $ hg debugdag -t -b +2:f @@ -15,10 +19,56 @@ @default*/p2+2:tip tip $ hg id - f96e381c614c tip + 000000000000 glog $ hg glog --template '{rev}: {desc} [{branches}] @ {date}\n' - @ 11: r11 [] @ 11.00 + o 11: r11 [] @ 11.00 + | + o 10: r10 [] @ 10.00 + | + o 9: r9 [] @ 9.00 + |\ + | o 8: r8 [temp] @ 8.00 + | | + | o 7: r7 [temp] @ 7.00 + | | + | o 6: r6 [temp] @ 6.00 + | | + | o 5: r5 [temp] @ 5.00 + | | + o | 4: r4 [] @ 4.00 + | | + o | 3: r3 [] @ 3.00 + | | + o | 2: r2 [] @ 2.00 + |/ + o 1: r1 [] @ 1.00 + | + o 0: r0 [] @ 0.00 + + +overwritten files + + $ rm -rf repo + $ hg init repo + $ cd repo + $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' -q -o +tags + $ cat .hg/localtags + 2a8ed67d317e370eac733dccc501b12d7b9c441a f + 4226a30965b7af58f94d0cda7e6c2c9c63e6bf90 p2 +dag + $ hg debugdag -t -b + +2:f + +3:p2 + @temp*f+3 + @default*/p2+2:tip +tip + $ hg id + 000000000000 +glog + $ hg glog --template '{rev}: {desc} [{branches}] @ {date}\n' + o 11: r11 [] @ 11.00 | o 10: r10 [] @ 10.00 | @@ -44,33 +94,7 @@ glog of $ hg glog --template '{rev}: {desc} [{branches}]\n' of - @ 11: r11 [] - | - o 10: r10 [] - | - o 9: r9 [] - |\ - | o 8: r8 [temp] - | | - | o 7: r7 [temp] - | | - | o 6: r6 [temp] - | | - | o 5: r5 [temp] - | | - o | 4: r4 [] - | | - o | 3: r3 [] - | | - o | 2: r2 [] - |/ - o 1: r1 [] - | - o 0: r0 [] - -glog af - $ hg glog --template '{rev}: {desc} [{branches}]\n' af - @ 11: r11 [] + o 11: r11 [] | o 10: r10 [] | @@ -96,25 +120,15 @@ tags $ hg tags -v - tip 11:f96e381c614c - p2 4:d9d6db981b55 local - f 1:73253def624e local + tip 11:58a51e5eb988 + p2 4:4226a30965b7 local + f 1:2a8ed67d317e local cat of - $ hg cat of - r11 -cat af - $ hg cat af - r0 - r1 - r5 - r6 - r7 - r8 - r9 - r10 + $ hg cat of --rev tip r11 $ cd .. + new and mergeable files $ rm -rf repo @@ -129,10 +143,10 @@ @default*/p2+2:tip tip $ hg id - 9c5ce9b70771 tip + 000000000000 glog $ hg glog --template '{rev}: {desc} [{branches}] @ {date}\n' - @ 11: r11 [] @ 11.00 + o 11: r11 [] @ 11.00 | o 10: r10 [] @ 10.00 | @@ -158,7 +172,7 @@ glog mf $ hg glog --template '{rev}: {desc} [{branches}]\n' mf - @ 11: r11 [] + o 11: r11 [] | o 10: r10 [] | @@ -253,7 +267,7 @@ 22 23 man - $ hg manifest + $ hg manifest --rev tip mf nf0 nf1 @@ -268,7 +282,7 @@ nf8 nf9 cat mf - $ hg cat mf + $ hg cat mf --rev tip 0 r0 1 2 r1 @@ -295,27 +309,5 @@ 23 $ cd .. -command - $ rm -rf repo - $ hg init repo - $ cd repo - $ hg debugbuilddag '+2 !"touch X" +2' -q -o -dag - $ hg debugdag -t -b - +4:tip -glog - $ hg glog --template '{rev}: {desc} [{branches}]\n' - @ 3: r3 [] - | - o 2: r2 [] - | - o 1: r1 [] - | - o 0: r0 [] - -glog X - $ hg glog --template '{rev}: {desc} [{branches}]\n' X - o 2: r2 [] - | - $ cd .. +
--- a/tests/test-debugcomplete.t Mon May 02 19:20:29 2011 +0200 +++ b/tests/test-debugcomplete.t Mon May 02 19:21:30 2011 +0200 @@ -211,7 +211,7 @@ cat: output, rev, decode, include, exclude copy: after, force, include, exclude, dry-run debugancestor: - debugbuilddag: mergeable-file, appended-file, overwritten-file, new-file + debugbuilddag: mergeable-file, overwritten-file, new-file debugbundle: all debugcheckstate: debugcommands:
--- a/tests/test-getbundle.t Mon May 02 19:20:29 2011 +0200 +++ b/tests/test-getbundle.t Mon May 02 19:21:30 2011 +0200 @@ -12,41 +12,41 @@ $ cd repo $ hg debugbuilddag -n -m '+2 :fork +5 :p1 *fork +6 :p2 /p1 :m1 +3' > /dev/null $ hg glog --template '{node}\n' - @ 2bba2f40f321484159b395a43f20101d4bb7ead0 + o 10c14a2cc935e1d8c31f9e98587dcf27fb08a6da | - o d9e5488323c782fe684573f3043369d199038b6f + o 4801a72e5d88cb515b0c7e40fae34180f3f837f2 | - o 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 + o 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 | - o 733bf0910832b26b768a09172f325f995b5476e1 + o 8365676dbab05860ce0d9110f2af51368b961bbd |\ - | o b5af5d6ea56d73ce24c40bc3cd19a862f74888ac + | o 5686dbbd9fc46cb806599c878d02fe1cb56b83d3 | | - | o 6b57ee934bb2996050540f84cdfc8dcad1e7267d + | o 13c0170174366b441dc68e8e33757232fa744458 | | - | o 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 + | o 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 | | - | o c1818a9f5977dd4139a48f93f5425c67d44a9368 + | o 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 | | - | o 6c725a58ad10aea441540bfd06c507f63e8b9cdd + | o 928b5f94cdb278bb536eba552de348a4e92ef24d | | - | o 18063366a155bd56b5618229ae2ac3e91849aa5e + | o f34414c64173e0ecb61b25dc55e116dbbcc89bee | | - | o a21d913c992197a2eb60b298521ec0f045a04799 + | o 8931463777131cd73923e560b760061f2aa8a4bc | | - o | b6b2b682253df2ffedc10e9415e4114202b303c5 + o | 6621d79f61b23ec74cf4b69464343d9e0980ec8b | | - o | 2114148793524fd045998f71a45b0aaf139f752b + o | bac16991d12ff45f9dc43c52da1946dfadb83e80 | | - o | 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc + o | ff42371d57168345fdf1a3aac66a51f6a45d41d2 | | - o | ea919464b16e003894c48b6cb68df3cd9411b544 + o | d5f6e1ea452285324836a49d7d3c2a63cfed1d31 | | - o | 0f82d97ec2778746743fbc996740d409558fda22 + o | 713346a995c363120712aed1aee7e04afd867638 |/ - o 6e23b016bc0f0e79c7bd9dd372ccee07055d7fd4 + o 29a4d1f17bd3f0779ca0525bebb1cfb51067c738 | - o 10e64d654571f11577745b4d8372e859d9e4df63 + o 7704483d56b2a7b5db54dcee7c62378ac629b348 $ cd .. @@ -57,62 +57,62 @@ $ hg debuggetbundle repo bundle $ hg debugbundle bundle - 10e64d654571f11577745b4d8372e859d9e4df63 - 6e23b016bc0f0e79c7bd9dd372ccee07055d7fd4 - 0f82d97ec2778746743fbc996740d409558fda22 - ea919464b16e003894c48b6cb68df3cd9411b544 - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc - 2114148793524fd045998f71a45b0aaf139f752b - b6b2b682253df2ffedc10e9415e4114202b303c5 - a21d913c992197a2eb60b298521ec0f045a04799 - 18063366a155bd56b5618229ae2ac3e91849aa5e - 6c725a58ad10aea441540bfd06c507f63e8b9cdd - c1818a9f5977dd4139a48f93f5425c67d44a9368 - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d - b5af5d6ea56d73ce24c40bc3cd19a862f74888ac - 733bf0910832b26b768a09172f325f995b5476e1 - 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 - d9e5488323c782fe684573f3043369d199038b6f - 2bba2f40f321484159b395a43f20101d4bb7ead0 + 7704483d56b2a7b5db54dcee7c62378ac629b348 + 29a4d1f17bd3f0779ca0525bebb1cfb51067c738 + 713346a995c363120712aed1aee7e04afd867638 + d5f6e1ea452285324836a49d7d3c2a63cfed1d31 + ff42371d57168345fdf1a3aac66a51f6a45d41d2 + bac16991d12ff45f9dc43c52da1946dfadb83e80 + 6621d79f61b23ec74cf4b69464343d9e0980ec8b + 8931463777131cd73923e560b760061f2aa8a4bc + f34414c64173e0ecb61b25dc55e116dbbcc89bee + 928b5f94cdb278bb536eba552de348a4e92ef24d + 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 + 13c0170174366b441dc68e8e33757232fa744458 + 5686dbbd9fc46cb806599c878d02fe1cb56b83d3 + 8365676dbab05860ce0d9110f2af51368b961bbd + 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 + 4801a72e5d88cb515b0c7e40fae34180f3f837f2 + 10c14a2cc935e1d8c31f9e98587dcf27fb08a6da Get part of linear run: - $ hg debuggetbundle repo bundle -H d9e5488323c782fe684573f3043369d199038b6f -C 733bf0910832b26b768a09172f325f995b5476e1 + $ hg debuggetbundle repo bundle -H 4801a72e5d88cb515b0c7e40fae34180f3f837f2 -C 8365676dbab05860ce0d9110f2af51368b961bbd $ hg debugbundle bundle - 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 - d9e5488323c782fe684573f3043369d199038b6f + 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 + 4801a72e5d88cb515b0c7e40fae34180f3f837f2 Get missing branch and merge: - $ hg debuggetbundle repo bundle -H d9e5488323c782fe684573f3043369d199038b6f -C 6b57ee934bb2996050540f84cdfc8dcad1e7267d + $ hg debuggetbundle repo bundle -H 4801a72e5d88cb515b0c7e40fae34180f3f837f2 -C 13c0170174366b441dc68e8e33757232fa744458 $ hg debugbundle bundle - 0f82d97ec2778746743fbc996740d409558fda22 - ea919464b16e003894c48b6cb68df3cd9411b544 - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc - 2114148793524fd045998f71a45b0aaf139f752b - b6b2b682253df2ffedc10e9415e4114202b303c5 - b5af5d6ea56d73ce24c40bc3cd19a862f74888ac - 733bf0910832b26b768a09172f325f995b5476e1 - 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 - d9e5488323c782fe684573f3043369d199038b6f + 713346a995c363120712aed1aee7e04afd867638 + d5f6e1ea452285324836a49d7d3c2a63cfed1d31 + ff42371d57168345fdf1a3aac66a51f6a45d41d2 + bac16991d12ff45f9dc43c52da1946dfadb83e80 + 6621d79f61b23ec74cf4b69464343d9e0980ec8b + 5686dbbd9fc46cb806599c878d02fe1cb56b83d3 + 8365676dbab05860ce0d9110f2af51368b961bbd + 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 + 4801a72e5d88cb515b0c7e40fae34180f3f837f2 Get from only one head: - $ hg debuggetbundle repo bundle -H 6c725a58ad10aea441540bfd06c507f63e8b9cdd -C 6e23b016bc0f0e79c7bd9dd372ccee07055d7fd4 + $ hg debuggetbundle repo bundle -H 928b5f94cdb278bb536eba552de348a4e92ef24d -C 29a4d1f17bd3f0779ca0525bebb1cfb51067c738 $ hg debugbundle bundle - a21d913c992197a2eb60b298521ec0f045a04799 - 18063366a155bd56b5618229ae2ac3e91849aa5e - 6c725a58ad10aea441540bfd06c507f63e8b9cdd + 8931463777131cd73923e560b760061f2aa8a4bc + f34414c64173e0ecb61b25dc55e116dbbcc89bee + 928b5f94cdb278bb536eba552de348a4e92ef24d Get parts of two branches: - $ hg debuggetbundle repo bundle -H 6b57ee934bb2996050540f84cdfc8dcad1e7267d -C c1818a9f5977dd4139a48f93f5425c67d44a9368 -H 2114148793524fd045998f71a45b0aaf139f752b -C ea919464b16e003894c48b6cb68df3cd9411b544 + $ hg debuggetbundle repo bundle -H 13c0170174366b441dc68e8e33757232fa744458 -C 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 -H bac16991d12ff45f9dc43c52da1946dfadb83e80 -C d5f6e1ea452285324836a49d7d3c2a63cfed1d31 $ hg debugbundle bundle - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc - 2114148793524fd045998f71a45b0aaf139f752b - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d + ff42371d57168345fdf1a3aac66a51f6a45d41d2 + bac16991d12ff45f9dc43c52da1946dfadb83e80 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 + 13c0170174366b441dc68e8e33757232fa744458 Check that we get all needed file changes: @@ -120,54 +120,54 @@ format: id, p1, p2, cset, delta base, len(delta) changelog - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc ea919464b16e003894c48b6cb68df3cd9411b544 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc ea919464b16e003894c48b6cb68df3cd9411b544 99 - 2114148793524fd045998f71a45b0aaf139f752b 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 99 - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 c1818a9f5977dd4139a48f93f5425c67d44a9368 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 2114148793524fd045998f71a45b0aaf139f752b 102 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 102 + ff42371d57168345fdf1a3aac66a51f6a45d41d2 d5f6e1ea452285324836a49d7d3c2a63cfed1d31 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 d5f6e1ea452285324836a49d7d3c2a63cfed1d31 99 + bac16991d12ff45f9dc43c52da1946dfadb83e80 ff42371d57168345fdf1a3aac66a51f6a45d41d2 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 ff42371d57168345fdf1a3aac66a51f6a45d41d2 99 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 bac16991d12ff45f9dc43c52da1946dfadb83e80 102 + 13c0170174366b441dc68e8e33757232fa744458 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 102 manifest - dac7984588fc4eea7acbf39693a9c1b06f5b175d 591f732a3faf1fb903815273f3c199a514a61ccb 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 591f732a3faf1fb903815273f3c199a514a61ccb 113 - 0772616e6b48a76afb6c1458e193cbb3dae2e4ff dac7984588fc4eea7acbf39693a9c1b06f5b175d 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b dac7984588fc4eea7acbf39693a9c1b06f5b175d 113 - eb498cd9af6c44108e43041e951ce829e29f6c80 bff2f4817ced57b386caf7c4e3e36a4bc9af7e93 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 0772616e6b48a76afb6c1458e193cbb3dae2e4ff 295 - b15709c071ddd2d93188508ba156196ab4f19620 eb498cd9af6c44108e43041e951ce829e29f6c80 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d eb498cd9af6c44108e43041e951ce829e29f6c80 114 + dac7984588fc4eea7acbf39693a9c1b06f5b175d 591f732a3faf1fb903815273f3c199a514a61ccb 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 591f732a3faf1fb903815273f3c199a514a61ccb 113 + 0772616e6b48a76afb6c1458e193cbb3dae2e4ff dac7984588fc4eea7acbf39693a9c1b06f5b175d 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 dac7984588fc4eea7acbf39693a9c1b06f5b175d 113 + eb498cd9af6c44108e43041e951ce829e29f6c80 bff2f4817ced57b386caf7c4e3e36a4bc9af7e93 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 0772616e6b48a76afb6c1458e193cbb3dae2e4ff 295 + b15709c071ddd2d93188508ba156196ab4f19620 eb498cd9af6c44108e43041e951ce829e29f6c80 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 eb498cd9af6c44108e43041e951ce829e29f6c80 114 mf - 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 17 - c7b583de053293870e145f45bd2d61643563fd06 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 18 - 266ee3c0302a5a18f1cf96817ac79a51836179e9 edc0f6b8db80d68ae6aff2b19f7e5347ab68fa63 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 c7b583de053293870e145f45bd2d61643563fd06 149 - 698c6a36220548cd3903ca7dada27c59aa500c52 266ee3c0302a5a18f1cf96817ac79a51836179e9 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d 266ee3c0302a5a18f1cf96817ac79a51836179e9 19 + 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 17 + c7b583de053293870e145f45bd2d61643563fd06 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 18 + 266ee3c0302a5a18f1cf96817ac79a51836179e9 edc0f6b8db80d68ae6aff2b19f7e5347ab68fa63 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 c7b583de053293870e145f45bd2d61643563fd06 149 + 698c6a36220548cd3903ca7dada27c59aa500c52 266ee3c0302a5a18f1cf96817ac79a51836179e9 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 266ee3c0302a5a18f1cf96817ac79a51836179e9 19 nf11 - 33fbc651630ffa7ccbebfe4eb91320a873e7291c 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 0000000000000000000000000000000000000000 16 + 33fbc651630ffa7ccbebfe4eb91320a873e7291c 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 0000000000000000000000000000000000000000 16 nf12 - ddce0544363f037e9fb889faca058f52dc01c0a5 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d 0000000000000000000000000000000000000000 16 + ddce0544363f037e9fb889faca058f52dc01c0a5 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 0000000000000000000000000000000000000000 16 nf4 - 3c1407305701051cbed9f9cb9a68bdfb5997c235 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 0000000000000000000000000000000000000000 15 + 3c1407305701051cbed9f9cb9a68bdfb5997c235 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 0000000000000000000000000000000000000000 15 nf5 - 0dbd89c185f53a1727c54cd1ce256482fa23968e 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b 0000000000000000000000000000000000000000 15 + 0dbd89c185f53a1727c54cd1ce256482fa23968e 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 0000000000000000000000000000000000000000 15 Get branch and merge: - $ hg debuggetbundle repo bundle -C 10e64d654571f11577745b4d8372e859d9e4df63 -H 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 + $ hg debuggetbundle repo bundle -C 7704483d56b2a7b5db54dcee7c62378ac629b348 -H 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 $ hg debugbundle bundle - 6e23b016bc0f0e79c7bd9dd372ccee07055d7fd4 - 0f82d97ec2778746743fbc996740d409558fda22 - ea919464b16e003894c48b6cb68df3cd9411b544 - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc - 2114148793524fd045998f71a45b0aaf139f752b - b6b2b682253df2ffedc10e9415e4114202b303c5 - a21d913c992197a2eb60b298521ec0f045a04799 - 18063366a155bd56b5618229ae2ac3e91849aa5e - 6c725a58ad10aea441540bfd06c507f63e8b9cdd - c1818a9f5977dd4139a48f93f5425c67d44a9368 - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d - b5af5d6ea56d73ce24c40bc3cd19a862f74888ac - 733bf0910832b26b768a09172f325f995b5476e1 - 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 + 29a4d1f17bd3f0779ca0525bebb1cfb51067c738 + 713346a995c363120712aed1aee7e04afd867638 + d5f6e1ea452285324836a49d7d3c2a63cfed1d31 + ff42371d57168345fdf1a3aac66a51f6a45d41d2 + bac16991d12ff45f9dc43c52da1946dfadb83e80 + 6621d79f61b23ec74cf4b69464343d9e0980ec8b + 8931463777131cd73923e560b760061f2aa8a4bc + f34414c64173e0ecb61b25dc55e116dbbcc89bee + 928b5f94cdb278bb536eba552de348a4e92ef24d + 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 + 13c0170174366b441dc68e8e33757232fa744458 + 5686dbbd9fc46cb806599c878d02fe1cb56b83d3 + 8365676dbab05860ce0d9110f2af51368b961bbd + 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 = Test via HTTP = @@ -178,33 +178,33 @@ $ cat hg.pid >> $DAEMON_PIDS $ hg debuggetbundle http://localhost:$HGPORT/ bundle $ hg debugbundle bundle - 10e64d654571f11577745b4d8372e859d9e4df63 - 6e23b016bc0f0e79c7bd9dd372ccee07055d7fd4 - 0f82d97ec2778746743fbc996740d409558fda22 - ea919464b16e003894c48b6cb68df3cd9411b544 - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc - 2114148793524fd045998f71a45b0aaf139f752b - b6b2b682253df2ffedc10e9415e4114202b303c5 - a21d913c992197a2eb60b298521ec0f045a04799 - 18063366a155bd56b5618229ae2ac3e91849aa5e - 6c725a58ad10aea441540bfd06c507f63e8b9cdd - c1818a9f5977dd4139a48f93f5425c67d44a9368 - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d - b5af5d6ea56d73ce24c40bc3cd19a862f74888ac - 733bf0910832b26b768a09172f325f995b5476e1 - 6e9a5adf5437e49c746288cf95c5ac34fa8f2f72 - d9e5488323c782fe684573f3043369d199038b6f - 2bba2f40f321484159b395a43f20101d4bb7ead0 + 7704483d56b2a7b5db54dcee7c62378ac629b348 + 29a4d1f17bd3f0779ca0525bebb1cfb51067c738 + 713346a995c363120712aed1aee7e04afd867638 + d5f6e1ea452285324836a49d7d3c2a63cfed1d31 + ff42371d57168345fdf1a3aac66a51f6a45d41d2 + bac16991d12ff45f9dc43c52da1946dfadb83e80 + 6621d79f61b23ec74cf4b69464343d9e0980ec8b + 8931463777131cd73923e560b760061f2aa8a4bc + f34414c64173e0ecb61b25dc55e116dbbcc89bee + 928b5f94cdb278bb536eba552de348a4e92ef24d + 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 + 13c0170174366b441dc68e8e33757232fa744458 + 5686dbbd9fc46cb806599c878d02fe1cb56b83d3 + 8365676dbab05860ce0d9110f2af51368b961bbd + 0b2f73f04880d9cb6a5cd8a757f0db0ad01e32c3 + 4801a72e5d88cb515b0c7e40fae34180f3f837f2 + 10c14a2cc935e1d8c31f9e98587dcf27fb08a6da Get parts of two branches: - $ hg debuggetbundle http://localhost:$HGPORT/ bundle -H 6b57ee934bb2996050540f84cdfc8dcad1e7267d -C c1818a9f5977dd4139a48f93f5425c67d44a9368 -H 2114148793524fd045998f71a45b0aaf139f752b -C ea919464b16e003894c48b6cb68df3cd9411b544 + $ hg debuggetbundle http://localhost:$HGPORT/ bundle -H 13c0170174366b441dc68e8e33757232fa744458 -C 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 -H bac16991d12ff45f9dc43c52da1946dfadb83e80 -C d5f6e1ea452285324836a49d7d3c2a63cfed1d31 $ hg debugbundle bundle - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc - 2114148793524fd045998f71a45b0aaf139f752b - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d + ff42371d57168345fdf1a3aac66a51f6a45d41d2 + bac16991d12ff45f9dc43c52da1946dfadb83e80 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 + 13c0170174366b441dc68e8e33757232fa744458 Check that we get all needed file changes: @@ -212,34 +212,34 @@ format: id, p1, p2, cset, delta base, len(delta) changelog - 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc ea919464b16e003894c48b6cb68df3cd9411b544 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc ea919464b16e003894c48b6cb68df3cd9411b544 99 - 2114148793524fd045998f71a45b0aaf139f752b 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 99 - 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 c1818a9f5977dd4139a48f93f5425c67d44a9368 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 2114148793524fd045998f71a45b0aaf139f752b 102 - 6b57ee934bb2996050540f84cdfc8dcad1e7267d 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 102 + ff42371d57168345fdf1a3aac66a51f6a45d41d2 d5f6e1ea452285324836a49d7d3c2a63cfed1d31 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 d5f6e1ea452285324836a49d7d3c2a63cfed1d31 99 + bac16991d12ff45f9dc43c52da1946dfadb83e80 ff42371d57168345fdf1a3aac66a51f6a45d41d2 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 ff42371d57168345fdf1a3aac66a51f6a45d41d2 99 + 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 700b7e19db54103633c4bf4a6a6b6d55f4d50c03 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 bac16991d12ff45f9dc43c52da1946dfadb83e80 102 + 13c0170174366b441dc68e8e33757232fa744458 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 102 manifest - dac7984588fc4eea7acbf39693a9c1b06f5b175d 591f732a3faf1fb903815273f3c199a514a61ccb 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 591f732a3faf1fb903815273f3c199a514a61ccb 113 - 0772616e6b48a76afb6c1458e193cbb3dae2e4ff dac7984588fc4eea7acbf39693a9c1b06f5b175d 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b dac7984588fc4eea7acbf39693a9c1b06f5b175d 113 - eb498cd9af6c44108e43041e951ce829e29f6c80 bff2f4817ced57b386caf7c4e3e36a4bc9af7e93 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 0772616e6b48a76afb6c1458e193cbb3dae2e4ff 295 - b15709c071ddd2d93188508ba156196ab4f19620 eb498cd9af6c44108e43041e951ce829e29f6c80 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d eb498cd9af6c44108e43041e951ce829e29f6c80 114 + dac7984588fc4eea7acbf39693a9c1b06f5b175d 591f732a3faf1fb903815273f3c199a514a61ccb 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 591f732a3faf1fb903815273f3c199a514a61ccb 113 + 0772616e6b48a76afb6c1458e193cbb3dae2e4ff dac7984588fc4eea7acbf39693a9c1b06f5b175d 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 dac7984588fc4eea7acbf39693a9c1b06f5b175d 113 + eb498cd9af6c44108e43041e951ce829e29f6c80 bff2f4817ced57b386caf7c4e3e36a4bc9af7e93 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 0772616e6b48a76afb6c1458e193cbb3dae2e4ff 295 + b15709c071ddd2d93188508ba156196ab4f19620 eb498cd9af6c44108e43041e951ce829e29f6c80 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 eb498cd9af6c44108e43041e951ce829e29f6c80 114 mf - 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 17 - c7b583de053293870e145f45bd2d61643563fd06 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 18 - 266ee3c0302a5a18f1cf96817ac79a51836179e9 edc0f6b8db80d68ae6aff2b19f7e5347ab68fa63 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 c7b583de053293870e145f45bd2d61643563fd06 149 - 698c6a36220548cd3903ca7dada27c59aa500c52 266ee3c0302a5a18f1cf96817ac79a51836179e9 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d 266ee3c0302a5a18f1cf96817ac79a51836179e9 19 + 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 301ca08d026bb72cb4258a9d211bdf7ca0bcd810 17 + c7b583de053293870e145f45bd2d61643563fd06 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 4f73f97080266ab8e0c0561ca8d0da3eaf65b695 18 + 266ee3c0302a5a18f1cf96817ac79a51836179e9 edc0f6b8db80d68ae6aff2b19f7e5347ab68fa63 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 c7b583de053293870e145f45bd2d61643563fd06 149 + 698c6a36220548cd3903ca7dada27c59aa500c52 266ee3c0302a5a18f1cf96817ac79a51836179e9 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 266ee3c0302a5a18f1cf96817ac79a51836179e9 19 nf11 - 33fbc651630ffa7ccbebfe4eb91320a873e7291c 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 2c0ec49482e8abe888b7bd090b5827acfc22b3d7 0000000000000000000000000000000000000000 16 + 33fbc651630ffa7ccbebfe4eb91320a873e7291c 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 63476832d8ec6558cf9bbe3cbe0c757e5cf18043 0000000000000000000000000000000000000000 16 nf12 - ddce0544363f037e9fb889faca058f52dc01c0a5 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 6b57ee934bb2996050540f84cdfc8dcad1e7267d 0000000000000000000000000000000000000000 16 + ddce0544363f037e9fb889faca058f52dc01c0a5 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 13c0170174366b441dc68e8e33757232fa744458 0000000000000000000000000000000000000000 16 nf4 - 3c1407305701051cbed9f9cb9a68bdfb5997c235 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 74a573f2ae100f1cedfad9aa7b96f8eaab1dabfc 0000000000000000000000000000000000000000 15 + 3c1407305701051cbed9f9cb9a68bdfb5997c235 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 ff42371d57168345fdf1a3aac66a51f6a45d41d2 0000000000000000000000000000000000000000 15 nf5 - 0dbd89c185f53a1727c54cd1ce256482fa23968e 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 2114148793524fd045998f71a45b0aaf139f752b 0000000000000000000000000000000000000000 15 + 0dbd89c185f53a1727c54cd1ce256482fa23968e 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 bac16991d12ff45f9dc43c52da1946dfadb83e80 0000000000000000000000000000000000000000 15 Verify we hit the HTTP server: @@ -247,7 +247,7 @@ * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob) * - - [*] "GET /?cmd=getbundle HTTP/1.1" 200 - (glob) * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob) - * - - [*] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:common=c1818a9f5977dd4139a48f93f5425c67d44a9368+ea919464b16e003894c48b6cb68df3cd9411b544&heads=6b57ee934bb2996050540f84cdfc8dcad1e7267d+2114148793524fd045998f71a45b0aaf139f752b (glob) + * - - [*] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:common=700b7e19db54103633c4bf4a6a6b6d55f4d50c03+d5f6e1ea452285324836a49d7d3c2a63cfed1d31&heads=13c0170174366b441dc68e8e33757232fa744458+bac16991d12ff45f9dc43c52da1946dfadb83e80 (glob) $ cat error.log