diff --git a/hgext3rd/fbamend/fold.py b/hgext3rd/fbamend/fold.py --- a/hgext3rd/fbamend/fold.py +++ b/hgext3rd/fbamend/fold.py @@ -15,6 +15,7 @@ commands, error, hg, + node, phases, registrar, scmutil, @@ -25,6 +26,7 @@ cmdtable = {} command = registrar.command(cmdtable) +hex = node.hex @command('^fold|squash', [('r', 'rev', [], _("revision to fold")), @@ -133,6 +135,9 @@ phases.retractboundary(repo, tr, targetphase, [newid]) replacements = {ctx.node(): (newid,) for ctx in allctx} + nodechanges = {fm.hexfunc(ctx.node()): [fm.hexfunc(newid)] + for ctx in allctx} + fm.data(nodechanges=fm.formatdict(nodechanges)) scmutil.cleanupnodes(repo, replacements, 'fold') fm.condwrite(not ui.quiet, 'count', '%i changesets folded\n', len(revs)) diff --git a/hgext3rd/tweakdefaults.py b/hgext3rd/tweakdefaults.py --- a/hgext3rd/tweakdefaults.py +++ b/hgext3rd/tweakdefaults.py @@ -794,7 +794,7 @@ return orig(ui, repo, **opts) # set of commands which define their own formatter and prints the hash changes -formattercommands = set() +formattercommands = set(['fold']) def cleanupnodeswrapper(orig, repo, mapping, operation, *args, **kwargs): if (repo.ui.configbool('tweakdefaults', 'showupdated') and diff --git a/tests/test-fbamend-fold.t b/tests/test-fbamend-fold.t --- a/tests/test-fbamend-fold.t +++ b/tests/test-fbamend-fold.t @@ -221,3 +221,55 @@ test1 3:* (glob) test2_1 3:* (glob) test2_2 3:* (glob) + +Test JSON output + $ reset + $ hg debugbuilddag -m +6 + $ hg up 5 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ showgraph + @ 5 r5 + | + o 4 r4 + | + o 3 r3 + | + o 2 r2 + | + o 1 r1 + | + o 0 r0 + +When rebase is not involved + $ hg fold --from -r '.^' -Tjson -q + [ + { + "count": 2, + "nodechanges": {"aa70f0fe546a3536a4b9d49297099d140203494f": ["329a7569e12e1828787ecfebc262b012abcf7077"], "f2987ebe583896be81f8361000878a6f4b30e53a": ["329a7569e12e1828787ecfebc262b012abcf7077"]} + } + ] + + $ hg fold --from -r '.^' -T '{nodechanges|json}' -q + {"329a7569e12e1828787ecfebc262b012abcf7077": ["befa2830d024c4b14c1d5331052d7a13ec2df124"], "cb14eba0ad9cc49472e54fe97c261f5f78a79dab": ["befa2830d024c4b14c1d5331052d7a13ec2df124"]} (no-eol) + + $ showgraph + @ 7 r3 + | + o 2 r2 + | + o 1 r1 + | + o 0 r0 + +XXX: maybe we also want the rebase nodechanges here. +When rebase is involved + $ hg fold --exact 1 2 -Tjson -q + [ + { + "count": 2, + "nodechanges": {"09bb8c08de89bca9fffcd6ed3530d6178f07d9e2": ["d65bf110c68ee2cf0a0ba076da90df3fcf76229b"], "f07e66f449d06b214d0a8a9b1a6fa8af2f5f79a5": ["d65bf110c68ee2cf0a0ba076da90df3fcf76229b"]} + } + ] + + $ hg fold --exact 0 8 -T '{nodechanges|json}' -q + {"d65bf110c68ee2cf0a0ba076da90df3fcf76229b": ["785c10c9aad58fba814a235f074a79bdc5535083"], "fdaccbb26270c9a42503babe11fd846d7300df0b": ["785c10c9aad58fba814a235f074a79bdc5535083"]} (no-eol)