--- a/hgext/rebase.py Tue Oct 17 13:20:25 2017 -0700
+++ b/hgext/rebase.py Wed Oct 18 04:31:46 2017 +0530
@@ -21,6 +21,7 @@
from mercurial.i18n import _
from mercurial.node import (
+ hex,
nullid,
nullrev,
short,
@@ -501,6 +502,8 @@
def _finishrebase(self):
repo, ui, opts = self.repo, self.ui, self.opts
+ fm = ui.formatter('rebase', opts)
+ fm.startitem()
if self.collapsef and not self.keepopen:
p1, p2, _base = defineparents(repo, min(self.state), self.destmap,
self.state, self.skipped,
@@ -551,7 +554,7 @@
if self.collapsef:
collapsedas = newnode
clearrebased(ui, repo, self.destmap, self.state, self.skipped,
- collapsedas, self.keepf)
+ collapsedas, self.keepf, fm=fm)
clearstatus(repo)
clearcollapsemsg(repo)
@@ -561,6 +564,7 @@
if self.skipped:
skippedlen = len(self.skipped)
ui.note(_("%d revisions have been skipped\n") % skippedlen)
+ fm.end()
if (self.activebookmark and self.activebookmark in repo._bookmarks and
repo['.'].node() == repo._bookmarks[self.activebookmark]):
@@ -1517,7 +1521,7 @@
return originalwd, destmap, state
def clearrebased(ui, repo, destmap, state, skipped, collapsedas=None,
- keepf=False):
+ keepf=False, fm=None):
"""dispose of rebased revision at the end of the rebase
If `collapsedas` is not None, the rebase was a collapse whose result if the
@@ -1541,6 +1545,10 @@
succs = (newnode,)
replacements[oldnode] = succs
scmutil.cleanupnodes(repo, replacements, 'rebase', moves)
+ if fm:
+ nodechanges = {hex(oldn): [hex(n) for n in newn]
+ for oldn, newn in replacements.iteritems()}
+ fm.data(nodechanges=nodechanges)
def pullrebase(orig, ui, repo, *args, **opts):
'Call rebase after pull if the latter has been invoked with --rebase'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rebase-templates.t Wed Oct 18 04:31:46 2017 +0530
@@ -0,0 +1,44 @@
+Testing templating for rebase command
+
+Setup
+
+ $ cat >> $HGRCPATH <<EOF
+ > [extensions]
+ > rebase=
+ > [experimental]
+ > evolution=createmarkers
+ > EOF
+
+ $ hg init repo
+ $ cd repo
+ $ for ch in a b c d; do echo foo > $ch; hg commit -Aqm "Added "$ch; done
+
+ $ hg log -G -T "{rev}:{node|short} {desc}"
+ @ 3:62615734edd5 Added d
+ |
+ o 2:28ad74487de9 Added c
+ |
+ o 1:29becc82797a Added b
+ |
+ o 0:18d04c59bb5d Added a
+
+Getting the JSON output for nodechanges
+
+ $ hg rebase -s 2 -d 0 -q -Tjson
+ [
+ {
+ "nodechanges": {"28ad74487de9599d00d81085be739c61fc340652": ["849767420fd5519cf0026232411a943ed03cc9fb"], "62615734edd52f06b6fb9c2beb429e4fe30d57b8": ["df21b32134ba85d86bca590cbe9b8b7cbc346c53"]}
+ }
+ ]
+
+ $ hg log -G -T "{rev}:{node|short} {desc}"
+ @ 5:df21b32134ba Added d
+ |
+ o 4:849767420fd5 Added c
+ |
+ | o 1:29becc82797a Added b
+ |/
+ o 0:18d04c59bb5d Added a
+
+ $ hg rebase -s 1 -d 5 -q -T "{nodechanges|json}"
+ {"29becc82797a4bc11ec8880b58eaecd2ab3e7760": ["d9d6773efc831c274eace04bc13e8e6412517139"]} (no-eol)