debugmutation: improve format and render successors

Summary:
Update the debugmutation format to collapse long chains.  Add
`hg debugmutation -s` to follow the successor relationship (printing what the
commit became) instead of the predecessor relationship.

Reviewed By: mitrandir77

Differential Revision: D17156463

fbshipit-source-id: 44a68692e3bdea6a2fe2ef9f53b533199136eab1
This commit is contained in:
Mark Thomas 2019-09-06 00:40:29 -07:00 committed by Facebook Github Bot
parent d21fc6233a
commit 8dc0110c6d
8 changed files with 264 additions and 199 deletions

View File

@ -12,62 +12,101 @@ from ..i18n import _
from .cmdtable import command
@command(b"debugmutation", [], _("[REV]"))
@command(
b"debugmutation",
[("s", "successors", False, _("show successors instead of predecessors"))],
_("[REV]"),
)
def debugmutation(ui, repo, *revs, **opts):
"""display the mutation history of a commit"""
"""display the mutation history (or future) of a commit"""
repo = repo.unfiltered()
opts = pycompat.byteskwargs(opts)
for rev in scmutil.revrange(repo, revs):
ctx = repo[rev]
nodestack = [[ctx.node()]]
while nodestack:
node = nodestack[-1].pop()
ui.status(("%s%s") % (" " * len(nodestack), nodemod.hex(node)))
entry = mutation.lookup(repo, node)
if entry is not None:
preds = entry.preds()
mutop = entry.op()
mutuser = entry.user()
mutdate = util.shortdatetime((entry.time(), entry.tz()))
mutsplit = entry.split() or None
origin = entry.origin()
origin = {
None: "",
mutation.ORIGIN_LOCAL: "",
mutation.ORIGIN_COMMIT: " (from remote commit)",
mutation.ORIGIN_OBSMARKER: " (from obsmarker)",
mutation.ORIGIN_SYNTHETIC: " (synthetic)",
}.get(origin, " (unknown origin %s)" % origin)
extra = ""
if mutsplit is not None:
extra += " (split into this and: %s)" % ", ".join(
[nodemod.hex(n) for n in mutsplit]
)
ui.status(
(" %s by %s at %s%s%s from:")
% (mutop, mutuser, mutdate, extra, origin)
def describe(entry, showsplit=False, showfoldwith=None):
mutop = entry.op()
mutuser = entry.user()
mutdate = util.shortdatetime((entry.time(), entry.tz()))
mutpreds = entry.preds()
mutsplit = entry.split() or None
origin = entry.origin()
origin = {
None: "",
mutation.ORIGIN_LOCAL: "",
mutation.ORIGIN_COMMIT: " (from remote commit)",
mutation.ORIGIN_OBSMARKER: " (from obsmarker)",
mutation.ORIGIN_SYNTHETIC: " (synthetic)",
}.get(origin, " (unknown origin %s)" % origin)
extra = ""
if showsplit and mutsplit is not None:
extra += " (split into this and: %s)" % ", ".join(
[nodemod.hex(n) for n in mutsplit]
)
if showfoldwith is not None:
foldwith = [pred for pred in mutpreds if pred != showfoldwith]
if foldwith:
extra += " (folded with: %s)" % ", ".join(
[nodemod.hex(n) for n in foldwith]
)
return ("%s by %s at %s%s%s") % (mutop, mutuser, mutdate, extra, origin)
# Check for duplicate predecessors. There shouldn't be any.
if len(preds) != len(set(preds)):
predcount = {}
for pred in preds:
predcount.setdefault(pred, []).append(0)
predinfo = [
"%s x %s" % (len(c), nodemod.hex(n))
for n, c in predcount.iteritems()
if len(c) > 1
]
ui.status(
("\n%sDUPLICATE PREDECESSORS: %s")
% (" " * len(nodestack), ", ".join(predinfo))
)
def expandhistory(node):
entry = mutation.lookup(repo, node)
if entry is not None:
desc = describe(entry, showsplit=True) + " from:"
preds = util.removeduplicates(entry.preds())
return [(desc, preds)]
else:
return []
def expandfuture(node):
succsets = mutation.lookupsuccessors(repo, node)
edges = []
for succset in succsets:
entry = mutation.lookupsplit(repo, succset[0])
desc = describe(entry, showfoldwith=node) + " into:"
edges.append((desc, succset))
return edges
expand = expandfuture if opts.get("successors") else expandhistory
def rendernodes(prefix, nodes):
if len(nodes) == 1:
render(prefix, prefix, nodes[0])
elif len(nodes) > 1:
for node in nodes[:-1]:
render(prefix + "|- ", prefix + "| ", node)
render(prefix + "'- ", prefix + " ", nodes[-1])
def render(firstprefix, prefix, nextnode):
while nextnode:
node = nextnode
nextnode = None
ui.status(("%s%s") % (firstprefix, nodemod.hex(node)))
firstprefix = prefix
edges = expand(node)
if len(edges) == 0:
ui.status(("\n"))
elif len(edges) == 1:
desc, nextnodes = edges[0]
ui.status((" %s\n") % desc)
if len(nextnodes) == 1:
# Simple case, don't use recursion
nextnode = nextnodes[0]
else:
rendernodes(prefix, nextnodes)
elif len(edges) > 1:
ui.status((" diverges\n"))
for edge in edges[:-1]:
desc, nextnodes = edge
ui.status(("%s:= %s\n") % (prefix, desc))
rendernodes(prefix + ": ", nextnodes)
desc, nextnodes = edges[-1]
ui.status(("%s'= %s\n") % (prefix, desc))
rendernodes(prefix + " ", nextnodes)
for rev in scmutil.revrange(repo, revs):
render(" * ", " ", repo[rev].node())
preds = util.removeduplicates(preds)
nodestack.append(list(reversed(preds)))
ui.status(("\n"))
while nodestack and not nodestack[-1]:
nodestack.pop()
return 0

View File

@ -320,7 +320,7 @@ Show all commands + options
debuglabelcomplete:
debuglocks: force-lock, force-wlock, force-undolog-lock, set-lock, set-wlock
debugmergestate:
debugmutation:
debugmutation: successors
debugmutationfromobsmarkers:
debugnamecomplete:
debugobsolete: flags, record-parents, rev, exclusive, index, delete, date, user, template

View File

@ -996,7 +996,7 @@ Test list of internal help commands
debugmergestate
print merge state
debugmutation
display the mutation history of a commit
display the mutation history (or future) of a commit
debugmutationfromobsmarkers
convert obsolescence markers to mutation records
debugnamecomplete

View File

@ -64,7 +64,7 @@ The successors and predecessors information should be correct.
o 0: 48b9aae0607f 'Z'
$ hg debugmutation $O
11164ffef7a9840cc182930dae0e032875937b6a split by test at 1970-01-01T00:00:01 (split into this and: e1beb503e4fb1cec5df43ac57edfcff177d705ec) (from obsmarker) from:
* 11164ffef7a9840cc182930dae0e032875937b6a split by test at 1970-01-01T00:00:01 (split into this and: e1beb503e4fb1cec5df43ac57edfcff177d705ec) (from obsmarker) from:
e900f94a0435abcada5fcbc21f0ff399981ad817 rebase by test at 1970-01-01T00:00:00 (from obsmarker) from:
daf025dd63009f8b02a358a8b98a29347717170f amend by test at 1969-12-31T23:59:59 (from obsmarker) from:
917a077edb8d775c96bc95d34025c800b243ce6f
daf025dd63009f8b02a358a8b98a29347717170f amend by test at 1969-12-31T23:59:59 (from obsmarker) from:
917a077edb8d775c96bc95d34025c800b243ce6f

View File

@ -122,11 +122,11 @@ Clone the repo again, and pull an earlier commit. This will cause the server to
Check the history of the commits has been included.
$ hg debugmutation f1f3b
f1f3b31bcda86dbc8fe6a31ba7c6893bee792127 amend by test at 1970-01-01T00:00:00 (from remote commit) from:
* f1f3b31bcda86dbc8fe6a31ba7c6893bee792127 amend by test at 1970-01-01T00:00:00 (from remote commit) from:
01c5cd3313b899dca3e059b77aa454e0e2b5df7b amend by test at 1970-01-01T00:00:00 from:
598fd30ad50172d0389be262a242092f221bd196 amend by test at 1970-01-01T00:00:00 from:
ef7d26c88be0bf3c8d40a3569fd9c018f32a19ab amend by test at 1970-01-01T00:00:00 from:
20759b6926ce827d5a8c73eb1fa9726d6f7defb2
598fd30ad50172d0389be262a242092f221bd196 amend by test at 1970-01-01T00:00:00 from:
ef7d26c88be0bf3c8d40a3569fd9c018f32a19ab amend by test at 1970-01-01T00:00:00 from:
20759b6926ce827d5a8c73eb1fa9726d6f7defb2
Pulling in an earlier predecessor makes the predecessor show up.
$ hg pull -q -r $A

View File

@ -14,11 +14,11 @@
> hg amend -m "commit$i"
> done
$ hg debugmutation .
21c93100b04c543843a7dab4fa0d5bada061b7a0 amend by test at 1970-01-01T00:00:00 from:
* 21c93100b04c543843a7dab4fa0d5bada061b7a0 amend by test at 1970-01-01T00:00:00 from:
672a4910c364d425231d2dd2fb0486f32a2d88f4 amend by test at 1970-01-01T00:00:00 from:
d3c8fd338cf40a496d981b2ada8df4108f575897 amend by test at 1970-01-01T00:00:00 from:
932f02c9fad3fa46e55b62560c88eb67528b02f0 amend by test at 1970-01-01T00:00:00 from:
e6c779c67aa947c951f334f4f312bd2b21d27e55
d3c8fd338cf40a496d981b2ada8df4108f575897 amend by test at 1970-01-01T00:00:00 from:
932f02c9fad3fa46e55b62560c88eb67528b02f0 amend by test at 1970-01-01T00:00:00 from:
e6c779c67aa947c951f334f4f312bd2b21d27e55
Loops are not normally possible, but they can sneak in through backfilling complex
obsmarker graphs. Create a fake one to check behaviour.

View File

@ -74,14 +74,14 @@ Pushrebase some commits from the client
o 0: a7d6a32ae4ec public 'base'
$ hg debugmutation ::tip
a7d6a32ae4ecf473d6f934e731f1868dda4d3fc9
06569a64c14156339463c64337f9cb5dc3a25442
1f850c9f0d599261fce148d3d19cdc89d8eb391f
466bbcaf803c40b7121013141b842e654ee07f7f pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
* a7d6a32ae4ecf473d6f934e731f1868dda4d3fc9
* 06569a64c14156339463c64337f9cb5dc3a25442
* 1f850c9f0d599261fce148d3d19cdc89d8eb391f
* 466bbcaf803c40b7121013141b842e654ee07f7f pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
b0c40d8745c83226015263d45e60a0d12722c515
bc165ecd11df56066a4d73e8294a85ecb255d3cf pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
* bc165ecd11df56066a4d73e8294a85ecb255d3cf pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
e52ebff2630810cbc8bc0e3a8de78cb662f0865f amend by test at 1970-01-01T00:00:00 from:
f558c5855324eea33b5f046b45b85db1fb98bca7
f558c5855324eea33b5f046b45b85db1fb98bca7
$ cd ../server
$ tglogp
@ -96,12 +96,12 @@ Pushrebase some commits from the client
o 0: a7d6a32ae4ec public 'base'
$ hg debugmutation ::tip
a7d6a32ae4ecf473d6f934e731f1868dda4d3fc9
06569a64c14156339463c64337f9cb5dc3a25442
1f850c9f0d599261fce148d3d19cdc89d8eb391f
466bbcaf803c40b7121013141b842e654ee07f7f pushrebase by test at 1970-01-01T00:00:00 from:
* a7d6a32ae4ecf473d6f934e731f1868dda4d3fc9
* 06569a64c14156339463c64337f9cb5dc3a25442
* 1f850c9f0d599261fce148d3d19cdc89d8eb391f
* 466bbcaf803c40b7121013141b842e654ee07f7f pushrebase by test at 1970-01-01T00:00:00 from:
b0c40d8745c83226015263d45e60a0d12722c515
bc165ecd11df56066a4d73e8294a85ecb255d3cf pushrebase by test at 1970-01-01T00:00:00 from:
* bc165ecd11df56066a4d73e8294a85ecb255d3cf pushrebase by test at 1970-01-01T00:00:00 from:
e52ebff2630810cbc8bc0e3a8de78cb662f0865f
Test pushing to a server that does not have mutation recording enabled. Synthetic mutation
@ -126,7 +126,7 @@ Push an original commit to the server. This doesn't get pushrebased.
remote: 5cfa12ac15ac c3
$ hg debugmutation .
5cfa12ac15aca3668b5f91e5a7b92aa309b320a9
* 5cfa12ac15aca3668b5f91e5a7b92aa309b320a9
Add commits on the server to pushrebase over.
@ -174,15 +174,15 @@ Push this commit to the server. We should create local mutation information.
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugmutation ".~4::."
bc165ecd11df56066a4d73e8294a85ecb255d3cf pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
* bc165ecd11df56066a4d73e8294a85ecb255d3cf pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
e52ebff2630810cbc8bc0e3a8de78cb662f0865f amend by test at 1970-01-01T00:00:00 from:
f558c5855324eea33b5f046b45b85db1fb98bca7
5cfa12ac15aca3668b5f91e5a7b92aa309b320a9
34295f2adc0954d129b43d9ad2d785376eacc3b6
b6dffa66e38820804c5eaf4d2c9477718f537ce3
56ff167c1749dc765639745247323a6139cd9514 pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
f558c5855324eea33b5f046b45b85db1fb98bca7
* 5cfa12ac15aca3668b5f91e5a7b92aa309b320a9
* 34295f2adc0954d129b43d9ad2d785376eacc3b6
* b6dffa66e38820804c5eaf4d2c9477718f537ce3
* 56ff167c1749dc765639745247323a6139cd9514 pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
254a42c0dcef8381419add47e4f0ff6cd50ea8c7 amend by test at 1970-01-01T00:00:00 from:
3f1b3b3d517fcd3c8cef763476c588fb99343c3d
3f1b3b3d517fcd3c8cef763476c588fb99343c3d
Test pushing to a futuristic server that doesn't support obsmarkers at all will still behave correctly.
@ -238,9 +238,9 @@ Test pushing to a futuristic server that doesn't support obsmarkers at all will
o 0: a7d6a32ae4ec public 'base'
$ hg debugmutation .
7a5f07a2de1e5def6fa3288bde454239ed183ac1 pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
* 7a5f07a2de1e5def6fa3288bde454239ed183ac1 pushrebase by test at 1970-01-01T00:00:00 (synthetic) from:
6b21e03c2693b7ccaea8bbc2ed465bf0f20669ea amend by test at 1970-01-01T00:00:00 from:
9407986f3421a1339098ddb424e7f4652626e70d
9407986f3421a1339098ddb424e7f4652626e70d
$ tglogm --hidden
@ 17: 7a5f07a2de1e 'c5 (amended)'

View File

@ -24,14 +24,14 @@ Amend
> hg amend -m "c1 (amended $i)"
> done
$ hg debugmutation .
cc809964b02448cb4c84c772b9beba99d4159cff amend by test at 1970-01-01T00:00:00 from:
* cc809964b02448cb4c84c772b9beba99d4159cff amend by test at 1970-01-01T00:00:00 from:
8b2e1bbf6c0bea98beb5615f7b1c49b8dc38a593 amend by test at 1970-01-01T00:00:00 from:
4c454f4e96edd98561fa548e4c24acdcd11b4f75 amend by test at 1970-01-01T00:00:00 from:
0b4427c985ad41ac0876748733cff668be15cb88 amend by test at 1970-01-01T00:00:00 from:
5e4af9f7ddb8b12225ad17fadd7e3e6031d52f00 amend by test at 1970-01-01T00:00:00 from:
5aeb3a2d36afb4cb50a6c491bc05584a1da2018d amend by test at 1970-01-01T00:00:00 from:
6d60953c6009fdd3d6bd870ad37c7f48ea6d1311 amend by test at 1970-01-01T00:00:00 from:
c5d0fa8770bdde6ef311cc640a78a2f686be28b4
4c454f4e96edd98561fa548e4c24acdcd11b4f75 amend by test at 1970-01-01T00:00:00 from:
0b4427c985ad41ac0876748733cff668be15cb88 amend by test at 1970-01-01T00:00:00 from:
5e4af9f7ddb8b12225ad17fadd7e3e6031d52f00 amend by test at 1970-01-01T00:00:00 from:
5aeb3a2d36afb4cb50a6c491bc05584a1da2018d amend by test at 1970-01-01T00:00:00 from:
6d60953c6009fdd3d6bd870ad37c7f48ea6d1311 amend by test at 1970-01-01T00:00:00 from:
c5d0fa8770bdde6ef311cc640a78a2f686be28b4
Rebase
@ -43,24 +43,24 @@ Rebase
$ hg rebase -q -s ".^" -d 1 --hidden
$ hg rebase -q -s ".^" -d 8 --hidden
$ hg debugmutation ".^::."
33ca17be2228dc288194daade1265b5de0222653 rebase by test at 1970-01-01T00:00:00 from:
* 33ca17be2228dc288194daade1265b5de0222653 rebase by test at 1970-01-01T00:00:00 from:
30184ea7dbf74f751464657e167173d1d531e700 rebase by test at 1970-01-01T00:00:00 from:
dfd7d11783056958dfd2bb5479b3f84c71b698b9 rebase by test at 1970-01-01T00:00:00 from:
a0d726ccf2422e2cbfe7b06d3dc3f81b064b05aa
054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
dfd7d11783056958dfd2bb5479b3f84c71b698b9 rebase by test at 1970-01-01T00:00:00 from:
a0d726ccf2422e2cbfe7b06d3dc3f81b064b05aa
* 054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
f6dac11b6941b475383af15d69cd0b7363e045d0 rebase by test at 1970-01-01T00:00:00 from:
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
Metaedit
$ hg meta -m "c3 (metaedited)"
$ hg debugmutation .
374724d5279b5992bf6ec2ccb3d326844e36b4ba metaedit by test at 1970-01-01T00:00:00 from:
* 374724d5279b5992bf6ec2ccb3d326844e36b4ba metaedit by test at 1970-01-01T00:00:00 from:
054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
f6dac11b6941b475383af15d69cd0b7363e045d0 rebase by test at 1970-01-01T00:00:00 from:
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
f6dac11b6941b475383af15d69cd0b7363e045d0 rebase by test at 1970-01-01T00:00:00 from:
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
Fold
@ -68,16 +68,16 @@ Fold
2 changesets folded
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugmutation .
f05234144e37d59b175fa4283563aac4dfe81ec0 fold by test at 1970-01-01T00:00:00 from:
33ca17be2228dc288194daade1265b5de0222653 rebase by test at 1970-01-01T00:00:00 from:
30184ea7dbf74f751464657e167173d1d531e700 rebase by test at 1970-01-01T00:00:00 from:
dfd7d11783056958dfd2bb5479b3f84c71b698b9 rebase by test at 1970-01-01T00:00:00 from:
a0d726ccf2422e2cbfe7b06d3dc3f81b064b05aa
374724d5279b5992bf6ec2ccb3d326844e36b4ba metaedit by test at 1970-01-01T00:00:00 from:
054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
* f05234144e37d59b175fa4283563aac4dfe81ec0 fold by test at 1970-01-01T00:00:00 from:
|- 33ca17be2228dc288194daade1265b5de0222653 rebase by test at 1970-01-01T00:00:00 from:
| 30184ea7dbf74f751464657e167173d1d531e700 rebase by test at 1970-01-01T00:00:00 from:
| dfd7d11783056958dfd2bb5479b3f84c71b698b9 rebase by test at 1970-01-01T00:00:00 from:
| a0d726ccf2422e2cbfe7b06d3dc3f81b064b05aa
'- 374724d5279b5992bf6ec2ccb3d326844e36b4ba metaedit by test at 1970-01-01T00:00:00 from:
054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
f6dac11b6941b475383af15d69cd0b7363e045d0 rebase by test at 1970-01-01T00:00:00 from:
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
Split, leaving some changes left over at the end
@ -108,8 +108,8 @@ Split, leaving some changes left over at the end
Done splitting? [yN] y
$ hg debugmutation ".^::."
7d383d1b236d896a5adeea8dc390b681e4ccb217
9c2c451b82d046da459d807b11c42992324e4e33 split by test at 1970-01-01T00:00:00 (split into this and: 7d383d1b236d896a5adeea8dc390b681e4ccb217) from:
* 7d383d1b236d896a5adeea8dc390b681e4ccb217
* 9c2c451b82d046da459d807b11c42992324e4e33 split by test at 1970-01-01T00:00:00 (split into this and: 7d383d1b236d896a5adeea8dc390b681e4ccb217) from:
07f94070ed0943f8108119a726522ec4879ed36a
Split parent, selecting all changes at the end
@ -161,10 +161,10 @@ Split parent, selecting all changes at the end
Split leaves the checkout at the top of the split commits
$ hg debugmutation ".^::tip"
36e4e93ec194346c3e5a0afefd426dbc14dcaf4a
aa10382521dc0799a9ebc1235aa0783149ffcc4e split by test at 1970-01-01T00:00:00 (split into this and: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) from:
* 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a
* aa10382521dc0799a9ebc1235aa0783149ffcc4e split by test at 1970-01-01T00:00:00 (split into this and: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) from:
be81d74b508c48b66c74f7c111188be611bb56a7
0623f07d148d6446aeb15deb7ead4cb6f62135ef rebase by test at 1970-01-01T00:00:00 from:
* 0623f07d148d6446aeb15deb7ead4cb6f62135ef rebase by test at 1970-01-01T00:00:00 from:
0529c1ec7df66092602017d0a5f372316d0bc360
Amend with rebase afterwards (split info should not be propagated)
@ -172,12 +172,12 @@ Amend with rebase afterwards (split info should not be propagated)
$ hg amend --rebase -m "c5 (split)"
rebasing 26:0623f07d148d "c6"
$ hg debugmutation ".::tip"
48b076c1640c53afc98cc99922d034e17830a65d amend by test at 1970-01-01T00:00:00 from:
* 48b076c1640c53afc98cc99922d034e17830a65d amend by test at 1970-01-01T00:00:00 from:
aa10382521dc0799a9ebc1235aa0783149ffcc4e split by test at 1970-01-01T00:00:00 (split into this and: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) from:
be81d74b508c48b66c74f7c111188be611bb56a7
c3b5428c707bb5ec79935064ec9a83084fee1afb rebase by test at 1970-01-01T00:00:00 from:
be81d74b508c48b66c74f7c111188be611bb56a7
* c3b5428c707bb5ec79935064ec9a83084fee1afb rebase by test at 1970-01-01T00:00:00 from:
0623f07d148d6446aeb15deb7ead4cb6f62135ef rebase by test at 1970-01-01T00:00:00 from:
0529c1ec7df66092602017d0a5f372316d0bc360
0529c1ec7df66092602017d0a5f372316d0bc360
Histedit
@ -204,44 +204,44 @@ Histedit
> pick b6ea0faadebf
> EOF
$ hg debugmutation 8::tip
cc809964b02448cb4c84c772b9beba99d4159cff amend by test at 1970-01-01T00:00:00 from:
* cc809964b02448cb4c84c772b9beba99d4159cff amend by test at 1970-01-01T00:00:00 from:
8b2e1bbf6c0bea98beb5615f7b1c49b8dc38a593 amend by test at 1970-01-01T00:00:00 from:
4c454f4e96edd98561fa548e4c24acdcd11b4f75 amend by test at 1970-01-01T00:00:00 from:
0b4427c985ad41ac0876748733cff668be15cb88 amend by test at 1970-01-01T00:00:00 from:
5e4af9f7ddb8b12225ad17fadd7e3e6031d52f00 amend by test at 1970-01-01T00:00:00 from:
5aeb3a2d36afb4cb50a6c491bc05584a1da2018d amend by test at 1970-01-01T00:00:00 from:
6d60953c6009fdd3d6bd870ad37c7f48ea6d1311 amend by test at 1970-01-01T00:00:00 from:
c5d0fa8770bdde6ef311cc640a78a2f686be28b4
1851fa2d6ef001f121536b4d076e8ec6c01e3b34 histedit by test at 1970-01-01T00:00:00 from:
76fad0d9f8585b5d315b140cf784130e4a23ba28 histedit by test at 1970-01-01T00:00:00 from:
5dbe0bac3aa7743362af3b46d69ea19ea84fd35a histedit by test at 1970-01-01T00:00:00 from:
419fc47d2ae4909d2cdff5f873c3d9c18eeaa057 histedit by test at 1970-01-01T00:00:00 from:
f05234144e37d59b175fa4283563aac4dfe81ec0 fold by test at 1970-01-01T00:00:00 from:
33ca17be2228dc288194daade1265b5de0222653 rebase by test at 1970-01-01T00:00:00 from:
30184ea7dbf74f751464657e167173d1d531e700 rebase by test at 1970-01-01T00:00:00 from:
dfd7d11783056958dfd2bb5479b3f84c71b698b9 rebase by test at 1970-01-01T00:00:00 from:
a0d726ccf2422e2cbfe7b06d3dc3f81b064b05aa
374724d5279b5992bf6ec2ccb3d326844e36b4ba metaedit by test at 1970-01-01T00:00:00 from:
054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
f6dac11b6941b475383af15d69cd0b7363e045d0 rebase by test at 1970-01-01T00:00:00 from:
38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
d139edd196dd2b5a298932fdd696b96cd8101982
7d383d1b236d896a5adeea8dc390b681e4ccb217
9c2c451b82d046da459d807b11c42992324e4e33 split by test at 1970-01-01T00:00:00 (split into this and: 7d383d1b236d896a5adeea8dc390b681e4ccb217) from:
07f94070ed0943f8108119a726522ec4879ed36a
36e4e93ec194346c3e5a0afefd426dbc14dcaf4a
48b076c1640c53afc98cc99922d034e17830a65d amend by test at 1970-01-01T00:00:00 from:
aa10382521dc0799a9ebc1235aa0783149ffcc4e split by test at 1970-01-01T00:00:00 (split into this and: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) from:
4c454f4e96edd98561fa548e4c24acdcd11b4f75 amend by test at 1970-01-01T00:00:00 from:
0b4427c985ad41ac0876748733cff668be15cb88 amend by test at 1970-01-01T00:00:00 from:
5e4af9f7ddb8b12225ad17fadd7e3e6031d52f00 amend by test at 1970-01-01T00:00:00 from:
5aeb3a2d36afb4cb50a6c491bc05584a1da2018d amend by test at 1970-01-01T00:00:00 from:
6d60953c6009fdd3d6bd870ad37c7f48ea6d1311 amend by test at 1970-01-01T00:00:00 from:
c5d0fa8770bdde6ef311cc640a78a2f686be28b4
* 1851fa2d6ef001f121536b4d076e8ec6c01e3b34 histedit by test at 1970-01-01T00:00:00 from:
|- 76fad0d9f8585b5d315b140cf784130e4a23ba28 histedit by test at 1970-01-01T00:00:00 from:
| |- 5dbe0bac3aa7743362af3b46d69ea19ea84fd35a histedit by test at 1970-01-01T00:00:00 from:
| | |- 419fc47d2ae4909d2cdff5f873c3d9c18eeaa057 histedit by test at 1970-01-01T00:00:00 from:
| | | |- f05234144e37d59b175fa4283563aac4dfe81ec0 fold by test at 1970-01-01T00:00:00 from:
| | | | |- 33ca17be2228dc288194daade1265b5de0222653 rebase by test at 1970-01-01T00:00:00 from:
| | | | | 30184ea7dbf74f751464657e167173d1d531e700 rebase by test at 1970-01-01T00:00:00 from:
| | | | | dfd7d11783056958dfd2bb5479b3f84c71b698b9 rebase by test at 1970-01-01T00:00:00 from:
| | | | | a0d726ccf2422e2cbfe7b06d3dc3f81b064b05aa
| | | | '- 374724d5279b5992bf6ec2ccb3d326844e36b4ba metaedit by test at 1970-01-01T00:00:00 from:
| | | | 054edf9500f5e849563bf6515446d74654e14fd0 rebase by test at 1970-01-01T00:00:00 from:
| | | | f6dac11b6941b475383af15d69cd0b7363e045d0 rebase by test at 1970-01-01T00:00:00 from:
| | | | 38dc6e5d067f289d0a1ad9c6eae9bb9ed111cd04 rebase by test at 1970-01-01T00:00:00 from:
| | | | d139edd196dd2b5a298932fdd696b96cd8101982
| | | '- 7d383d1b236d896a5adeea8dc390b681e4ccb217
| | '- 9c2c451b82d046da459d807b11c42992324e4e33 split by test at 1970-01-01T00:00:00 (split into this and: 7d383d1b236d896a5adeea8dc390b681e4ccb217) from:
| | 07f94070ed0943f8108119a726522ec4879ed36a
| '- 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a
'- 48b076c1640c53afc98cc99922d034e17830a65d amend by test at 1970-01-01T00:00:00 from:
aa10382521dc0799a9ebc1235aa0783149ffcc4e split by test at 1970-01-01T00:00:00 (split into this and: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) from:
be81d74b508c48b66c74f7c111188be611bb56a7
dd5d0e1bc12eb7fb11debaa39287fb24c16a80d8 histedit by test at 1970-01-01T00:00:00 from:
e1a0d5ae83cecdbf2a65995535ea1a3cd2009ab8 histedit by test at 1970-01-01T00:00:00 from:
e0e94ae5d0b0429f35bb3e14d1532fc861122e32 histedit by test at 1970-01-01T00:00:00 from:
c3b5428c707bb5ec79935064ec9a83084fee1afb rebase by test at 1970-01-01T00:00:00 from:
0623f07d148d6446aeb15deb7ead4cb6f62135ef rebase by test at 1970-01-01T00:00:00 from:
0529c1ec7df66092602017d0a5f372316d0bc360
c4484fcb5ac0f15058c6595a56d239d4ed707bee
64a3bc96c043ea50b808b3ace4a4c6d2ca92b2d2
3c3b86a5a351839b5fe6905587497121b4b05777 histedit by test at 1970-01-01T00:00:00 from:
* dd5d0e1bc12eb7fb11debaa39287fb24c16a80d8 histedit by test at 1970-01-01T00:00:00 from:
|- e1a0d5ae83cecdbf2a65995535ea1a3cd2009ab8 histedit by test at 1970-01-01T00:00:00 from:
| |- e0e94ae5d0b0429f35bb3e14d1532fc861122e32 histedit by test at 1970-01-01T00:00:00 from:
| | c3b5428c707bb5ec79935064ec9a83084fee1afb rebase by test at 1970-01-01T00:00:00 from:
| | 0623f07d148d6446aeb15deb7ead4cb6f62135ef rebase by test at 1970-01-01T00:00:00 from:
| | 0529c1ec7df66092602017d0a5f372316d0bc360
| '- c4484fcb5ac0f15058c6595a56d239d4ed707bee
'- 64a3bc96c043ea50b808b3ace4a4c6d2ca92b2d2
* 3c3b86a5a351839b5fe6905587497121b4b05777 histedit by test at 1970-01-01T00:00:00 from:
b6ea0faadebf4576be2b7cff316c5f9aa9fbc295
Revsets
@ -336,6 +336,32 @@ Unhide some old commits and show their mutations in the log
|/
o 0: d20a80d4def3 'base'
Debugmutatation looking forward
$ hg debugmutation -s c4484fcb5ac0f15058c6595a56d239d4ed707bee
* c4484fcb5ac0f15058c6595a56d239d4ed707bee diverges
:= histedit by test at 1970-01-01T00:00:00 into:
: 961157b412e21813bbee86fd1704fb09bd25874b
'= histedit by test at 1970-01-01T00:00:00 (folded with: e0e94ae5d0b0429f35bb3e14d1532fc861122e32) into:
e1a0d5ae83cecdbf2a65995535ea1a3cd2009ab8 histedit by test at 1970-01-01T00:00:00 (folded with: 64a3bc96c043ea50b808b3ace4a4c6d2ca92b2d2) into:
dd5d0e1bc12eb7fb11debaa39287fb24c16a80d8
$ hg debugmutation -s 07f94070ed0943f8108119a726522ec4879ed36a
* 07f94070ed0943f8108119a726522ec4879ed36a split by test at 1970-01-01T00:00:00 into:
|- 7d383d1b236d896a5adeea8dc390b681e4ccb217 diverges
| := histedit by test at 1970-01-01T00:00:00 (folded with: f05234144e37d59b175fa4283563aac4dfe81ec0) into:
| : 419fc47d2ae4909d2cdff5f873c3d9c18eeaa057 histedit by test at 1970-01-01T00:00:00 (folded with: 9c2c451b82d046da459d807b11c42992324e4e33) into:
| : 5dbe0bac3aa7743362af3b46d69ea19ea84fd35a histedit by test at 1970-01-01T00:00:00 (folded with: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) into:
| : 76fad0d9f8585b5d315b140cf784130e4a23ba28 histedit by test at 1970-01-01T00:00:00 (folded with: 48b076c1640c53afc98cc99922d034e17830a65d) into:
| : 1851fa2d6ef001f121536b4d076e8ec6c01e3b34
| '= histedit by test at 1970-01-01T00:00:00 into:
| 8d138e378583f27f0bf86eb38cf38c21ea0a49aa
'- 9c2c451b82d046da459d807b11c42992324e4e33 diverges
:= histedit by test at 1970-01-01T00:00:00 into:
: 2f5128c36bc27276ba0603d1dd333933c294bd0d
'= histedit by test at 1970-01-01T00:00:00 (folded with: 419fc47d2ae4909d2cdff5f873c3d9c18eeaa057) into:
5dbe0bac3aa7743362af3b46d69ea19ea84fd35a histedit by test at 1970-01-01T00:00:00 (folded with: 36e4e93ec194346c3e5a0afefd426dbc14dcaf4a) into:
76fad0d9f8585b5d315b140cf784130e4a23ba28 histedit by test at 1970-01-01T00:00:00 (folded with: 48b076c1640c53afc98cc99922d034e17830a65d) into:
1851fa2d6ef001f121536b4d076e8ec6c01e3b34
Histedit with exec that amends in between folds
$ cd ..
@ -360,27 +386,27 @@ Histedit with exec that amends in between folds
o 0: c2a29f8b7d7a 'commit 1'
$ hg debugmutation "all()"
c2a29f8b7d7a23d58e698384280df426802a1465
08d8367dafb9bb90c58101707eca32b726ca635a
15a208dbcdc54b4f841ffecf9d13f98675933242
0d4155d128bf7fff3f12582a65b52be84ad44809
f1153a6a5f2db8f8567d7e31efbf8096731ea1ef histedit by test at 1970-01-01T00:00:00 from:
* c2a29f8b7d7a23d58e698384280df426802a1465
* 08d8367dafb9bb90c58101707eca32b726ca635a
* 15a208dbcdc54b4f841ffecf9d13f98675933242
* 0d4155d128bf7fff3f12582a65b52be84ad44809
* f1153a6a5f2db8f8567d7e31efbf8096731ea1ef histedit by test at 1970-01-01T00:00:00 from:
15a208dbcdc54b4f841ffecf9d13f98675933242
7e96860f6790189e613eb93c3d8edc2e4432c204 histedit by test at 1970-01-01T00:00:00 from:
08d8367dafb9bb90c58101707eca32b726ca635a
15a208dbcdc54b4f841ffecf9d13f98675933242
cc92d7c90d06d08784aed399397f8cb68eb25325 amend by test at 1970-01-01T00:00:00 from:
* 7e96860f6790189e613eb93c3d8edc2e4432c204 histedit by test at 1970-01-01T00:00:00 from:
|- 08d8367dafb9bb90c58101707eca32b726ca635a
'- 15a208dbcdc54b4f841ffecf9d13f98675933242
* cc92d7c90d06d08784aed399397f8cb68eb25325 amend by test at 1970-01-01T00:00:00 from:
7e96860f6790189e613eb93c3d8edc2e4432c204 histedit by test at 1970-01-01T00:00:00 from:
08d8367dafb9bb90c58101707eca32b726ca635a
15a208dbcdc54b4f841ffecf9d13f98675933242
9ba93d4b6c80837572711b838b670dde6cf34803 histedit by test at 1970-01-01T00:00:00 from:
0d4155d128bf7fff3f12582a65b52be84ad44809
a2235e1011a071a02b80aadd371c2fb15308ce15 histedit by test at 1970-01-01T00:00:00 from:
cc92d7c90d06d08784aed399397f8cb68eb25325 amend by test at 1970-01-01T00:00:00 from:
7e96860f6790189e613eb93c3d8edc2e4432c204 histedit by test at 1970-01-01T00:00:00 from:
08d8367dafb9bb90c58101707eca32b726ca635a
15a208dbcdc54b4f841ffecf9d13f98675933242
|- 08d8367dafb9bb90c58101707eca32b726ca635a
'- 15a208dbcdc54b4f841ffecf9d13f98675933242
* 9ba93d4b6c80837572711b838b670dde6cf34803 histedit by test at 1970-01-01T00:00:00 from:
0d4155d128bf7fff3f12582a65b52be84ad44809
* a2235e1011a071a02b80aadd371c2fb15308ce15 histedit by test at 1970-01-01T00:00:00 from:
|- cc92d7c90d06d08784aed399397f8cb68eb25325 amend by test at 1970-01-01T00:00:00 from:
| 7e96860f6790189e613eb93c3d8edc2e4432c204 histedit by test at 1970-01-01T00:00:00 from:
| |- 08d8367dafb9bb90c58101707eca32b726ca635a
| '- 15a208dbcdc54b4f841ffecf9d13f98675933242
'- 0d4155d128bf7fff3f12582a65b52be84ad44809
Histedit with stop, extra commit, and fold
@ -413,18 +439,18 @@ Histedit with stop, extra commit, and fold
o 0: c2a29f8b7d7a 'commit 1'
$ hg debugmutation "all()"
c2a29f8b7d7a23d58e698384280df426802a1465
08d8367dafb9bb90c58101707eca32b726ca635a
15a208dbcdc54b4f841ffecf9d13f98675933242
0d4155d128bf7fff3f12582a65b52be84ad44809
f8ba6373a87ea735d0ec10f15816ea7121c25257 histedit by test at 1970-01-01T00:00:00 from:
* c2a29f8b7d7a23d58e698384280df426802a1465
* 08d8367dafb9bb90c58101707eca32b726ca635a
* 15a208dbcdc54b4f841ffecf9d13f98675933242
* 0d4155d128bf7fff3f12582a65b52be84ad44809
* f8ba6373a87ea735d0ec10f15816ea7121c25257 histedit by test at 1970-01-01T00:00:00 from:
15a208dbcdc54b4f841ffecf9d13f98675933242
59401578013ab5382082b65eed82d6a465c081a0
4ed766be66c60ad571e4f938b9b786ab1786882a histedit by test at 1970-01-01T00:00:00 from:
0d4155d128bf7fff3f12582a65b52be84ad44809
d313be93f9b7ee46e11581641241d356c346a001 histedit by test at 1970-01-01T00:00:00 from:
59401578013ab5382082b65eed82d6a465c081a0
* 59401578013ab5382082b65eed82d6a465c081a0
* 4ed766be66c60ad571e4f938b9b786ab1786882a histedit by test at 1970-01-01T00:00:00 from:
0d4155d128bf7fff3f12582a65b52be84ad44809
* d313be93f9b7ee46e11581641241d356c346a001 histedit by test at 1970-01-01T00:00:00 from:
|- 59401578013ab5382082b65eed82d6a465c081a0
'- 0d4155d128bf7fff3f12582a65b52be84ad44809
Drawdag
@ -460,19 +486,19 @@ Drawdag
o 0: 426bada5c675 'A'
$ hg debugmutation "all()"
426bada5c67598ca65036d57d9e4b64b0c1ce7a0
112478962961147124edd43549aedd1a335e44bf
26805aba1e600a82e93661149f2313866a221a7b
7fb047a69f220c21711122dfd94305a9efb60cba
17d61397e601357ae1dd94c787f794ff95aa2d59 rebase by test at 1970-01-01T00:00:00 from:
* 426bada5c67598ca65036d57d9e4b64b0c1ce7a0
* 112478962961147124edd43549aedd1a335e44bf
* 26805aba1e600a82e93661149f2313866a221a7b
* 7fb047a69f220c21711122dfd94305a9efb60cba
* 17d61397e601357ae1dd94c787f794ff95aa2d59 rebase by test at 1970-01-01T00:00:00 from:
26805aba1e600a82e93661149f2313866a221a7b
64a8289d249234b9886244d379f15e6b650b28e3
dd319aacbb516094646b9ee5a24a942e62110121 split by test at 1970-01-01T00:00:00 (split into this and: 7fb047a69f220c21711122dfd94305a9efb60cba, 64a8289d249234b9886244d379f15e6b650b28e3) from:
* 64a8289d249234b9886244d379f15e6b650b28e3
* dd319aacbb516094646b9ee5a24a942e62110121 split by test at 1970-01-01T00:00:00 (split into this and: 7fb047a69f220c21711122dfd94305a9efb60cba, 64a8289d249234b9886244d379f15e6b650b28e3) from:
112478962961147124edd43549aedd1a335e44bf
a1093b439e1bc272490fd1749b526a3f1463a41e rebase by test at 1970-01-01T00:00:00 from:
* a1093b439e1bc272490fd1749b526a3f1463a41e rebase by test at 1970-01-01T00:00:00 from:
17d61397e601357ae1dd94c787f794ff95aa2d59 rebase by test at 1970-01-01T00:00:00 from:
26805aba1e600a82e93661149f2313866a221a7b
b2faf047aa50279686b1635bfad505cd51300b3c
26805aba1e600a82e93661149f2313866a221a7b
* b2faf047aa50279686b1635bfad505cd51300b3c
Revsets obey visibility rules
@ -487,14 +513,14 @@ Revsets obey visibility rules
> EOS
$ hg debugmutation "all()"
426bada5c67598ca65036d57d9e4b64b0c1ce7a0
112478962961147124edd43549aedd1a335e44bf
2cb21a570bd242eb1225414c6634ed29cc9cfe93 amend by test at 1970-01-01T00:00:00 from:
* 426bada5c67598ca65036d57d9e4b64b0c1ce7a0
* 112478962961147124edd43549aedd1a335e44bf
* 2cb21a570bd242eb1225414c6634ed29cc9cfe93 amend by test at 1970-01-01T00:00:00 from:
112478962961147124edd43549aedd1a335e44bf
49cb92066bfd0763fff729c354345650b7428554
82b1bbd9d7bb25fa8b9354ca7f6cfd007a6291af amend by test at 1970-01-01T00:00:00 from:
* 49cb92066bfd0763fff729c354345650b7428554
* 82b1bbd9d7bb25fa8b9354ca7f6cfd007a6291af amend by test at 1970-01-01T00:00:00 from:
2cb21a570bd242eb1225414c6634ed29cc9cfe93 amend by test at 1970-01-01T00:00:00 from:
112478962961147124edd43549aedd1a335e44bf
112478962961147124edd43549aedd1a335e44bf
$ hg log -T '{node} {desc}\n' -r "successors($B)"
112478962961147124edd43549aedd1a335e44bf B
2cb21a570bd242eb1225414c6634ed29cc9cfe93 C