equal
deleted
inserted
replaced
21 xrange = range |
21 xrange = range |
22 |
22 |
23 cmdtable = {} |
23 cmdtable = {} |
24 command = registrar.command(cmdtable) |
24 command = registrar.command(cmdtable) |
25 |
25 |
|
26 |
26 @command(b'debugbruterebase') |
27 @command(b'debugbruterebase') |
27 def debugbruterebase(ui, repo, source, dest): |
28 def debugbruterebase(ui, repo, source, dest): |
28 """for every non-empty subset of source, run rebase -r subset -d dest |
29 """for every non-empty subset of source, run rebase -r subset -d dest |
29 |
30 |
30 Print one line summary for each subset. Assume obsstore is enabled. |
31 Print one line summary for each subset. Assume obsstore is enabled. |
43 |
44 |
44 for i in xrange(1, 2 ** len(srevs)): |
45 for i in xrange(1, 2 ** len(srevs)): |
45 subset = [rev for j, rev in enumerate(srevs) if i & (1 << j) != 0] |
46 subset = [rev for j, rev in enumerate(srevs) if i & (1 << j) != 0] |
46 spec = revsetlang.formatspec(b'%ld', subset) |
47 spec = revsetlang.formatspec(b'%ld', subset) |
47 tr = repo.transaction(b'rebase') |
48 tr = repo.transaction(b'rebase') |
48 tr._report = lambda x: 0 # hide "transaction abort" |
49 tr._report = lambda x: 0 # hide "transaction abort" |
49 |
50 |
50 ui.pushbuffer() |
51 ui.pushbuffer() |
51 try: |
52 try: |
52 rebase.rebase(ui, repo, dest=dest, rev=[spec]) |
53 rebase.rebase(ui, repo, dest=dest, rev=[spec]) |
53 except error.Abort as ex: |
54 except error.Abort as ex: |
68 summary = b' '.join(descs) |
69 summary = b' '.join(descs) |
69 ui.popbuffer() |
70 ui.popbuffer() |
70 repo.vfs.tryunlink(b'rebasestate') |
71 repo.vfs.tryunlink(b'rebasestate') |
71 |
72 |
72 subsetdesc = b''.join(getdesc(rev) for rev in subset) |
73 subsetdesc = b''.join(getdesc(rev) for rev in subset) |
73 ui.write((b'%s: %s\n') % (subsetdesc.rjust(len(srevs)), summary)) |
74 ui.write(b'%s: %s\n' % (subsetdesc.rjust(len(srevs)), summary)) |
74 tr.abort() |
75 tr.abort() |