--- a/hgext3rd/evolve/obshistory.py Thu Nov 07 17:22:44 2019 -0800
+++ b/hgext3rd/evolve/obshistory.py Thu Nov 07 16:34:01 2019 -0800
@@ -179,7 +179,7 @@
succs = sorted(succs)
for successor in succs:
- _debugobshistorydisplaymarker(markerfm, successor,
+ _debugobshistorydisplaymarker(self.ui, markerfm, successor,
ctx.node(), self.repo,
self._includediff)
@@ -191,7 +191,7 @@
if not markers:
continue
successors = succset[b"successors"]
- _debugobshistorydisplaysuccsandmarkers(markerfm, successors, markers, ctx.node(), self.repo, self._includediff)
+ _debugobshistorydisplaysuccsandmarkers(self.ui, markerfm, successors, markers, ctx.node(), self.repo, self._includediff)
markerfm.end()
@@ -455,7 +455,7 @@
markerfm = fm.nested(b"markers")
for successor in sorted(succs):
includediff = opts and opts.get("patch")
- _debugobshistorydisplaymarker(markerfm, successor, ctxnode, unfi, includediff)
+ _debugobshistorydisplaymarker(ui, markerfm, successor, ctxnode, unfi, includediff)
markerfm.end()
precs = precursors.get(ctxnode, ())
@@ -497,7 +497,7 @@
label=b"evolve.node evolve.missing_change_ctx")
fm.plain(b'\n')
-def _debugobshistorydisplaymarker(fm, marker, node, repo, includediff=False):
+def _debugobshistorydisplaymarker(ui, fm, marker, node, repo, includediff=False):
succnodes = marker[1]
date = marker[4]
metadata = dict(marker[3])
@@ -593,15 +593,18 @@
def tolist(text):
return [text]
- fm.plain(b"\n")
+ ui.pushbuffer(labeled=True)
+ ui.write(b"\n")
for chunk, label in patch.difflabel(tolist, descriptionpatch):
chunk = chunk.strip(b'\t')
if chunk and chunk != b'\n':
- fm.plain(b' ')
- fm.write(b'descdiff', b'%s', chunk, label=label)
+ ui.write(b' ')
+ ui.write(chunk, label=label)
+ fm.write(b'descdiff', b'%s', ui.popbuffer())
# Content patch
+ ui.pushbuffer(labeled=True)
diffopts = patch.diffallopts(repo.ui, {})
matchfn = scmutil.matchall(repo)
firstline = True
@@ -609,14 +612,15 @@
for chunk, label in patch.diffui(repo, node, succ, matchfn,
opts=diffopts):
if firstline:
- fm.plain(b'\n')
+ ui.write(b'\n')
firstline = False
if linestart:
- fm.plain(b' ')
+ ui.write(b' ')
linestart = False
if chunk == b'\n':
linestart = True
- fm.write(b'patch', b'%s', chunk, label=label)
+ ui.write(chunk, label=label)
+ fm.write(b'patch', b'%s', ui.popbuffer())
else:
nopatch = b" (No patch available, %s)" % _patchavailable[1]
fm.plain(b"\n")
@@ -625,7 +629,7 @@
fm.plain(b"\n")
-def _debugobshistorydisplaysuccsandmarkers(fm, succnodes, markers, node, repo, includediff=False):
+def _debugobshistorydisplaysuccsandmarkers(ui, fm, succnodes, markers, node, repo, includediff=False):
"""
This function is a duplication of _debugobshistorydisplaymarker modified
to accept multiple markers as input.
@@ -733,15 +737,18 @@
def tolist(text):
return [text]
- fm.plain(b"\n")
+ ui.pushbuffer(labeled=True)
+ ui.write(b"\n")
for chunk, label in patch.difflabel(tolist, descriptionpatch):
chunk = chunk.strip(b'\t')
if chunk and chunk != b'\n':
- fm.plain(b' ')
- fm.write(b'descdiff', b'%s', chunk, label=label)
+ ui.write(b' ')
+ ui.write(chunk, label=label)
+ fm.write(b'descdiff', b'%s', ui.popbuffer())
# Content patch
+ ui.pushbuffer(labeled=True)
diffopts = patch.diffallopts(repo.ui, {})
matchfn = scmutil.matchall(repo)
firstline = True
@@ -749,14 +756,15 @@
for chunk, label in patch.diffui(repo, node, succ, matchfn,
opts=diffopts):
if firstline:
- fm.plain(b'\n')
+ ui.write(b'\n')
firstline = False
if linestart:
- fm.plain(b' ')
+ ui.write(b' ')
linestart = False
if chunk == b'\n':
linestart = True
- fm.write(b'patch', b'%s', chunk, label=label)
+ ui.write(chunk, label=label)
+ fm.write(b'patch', b'%s', ui.popbuffer())
else:
nopatch = b" (No patch available, %s)" % _patchavailable[1]
fm.plain(b"\n")
--- a/tests/test-evolve-obshistory-amend.t Thu Nov 07 17:22:44 2019 -0800
+++ b/tests/test-evolve-obshistory-amend.t Thu Nov 07 16:34:01 2019 -0800
@@ -112,14 +112,20 @@
Test that content diff works with templating
-BROKEN: should show content diff
$ hg obslog --color=debug --patch 4ae3a4151de9 \
> -T '{node} {desc|firstline}\n{markers % "patch:\n```{patch}```\n"}'
@ 4ae3a4151de9 A1
|
x 471f378eab4c A0
patch:
- ``````
+ ```
+ [diff.diffline|diff -r 471f378eab4c -r 4ae3a4151de9 A0]
+ [diff.file_a|--- a/A0 Thu Jan 01 00:00:00 1970 +0000]
+ [diff.file_b|+++ b/A0 Thu Jan 01 00:00:00 1970 +0000]
+ [diff.hunk|@@ -1,1 +1,2 @@]
+ A0
+ [diff.inserted|+42]
+ ```
$ hg obslog 4ae3a4151de9 --graph -T'{label("log.summary", desc|firstline)} {if(markers, join(markers % "at {date|hgdate} by {user|person} ", " also "))}'
@ A1
@@ -362,20 +368,48 @@
Test that description diff works with templating
-BROKEN: should show description diff
$ hg obslog --color=debug --patch 92210308515b \
> -T '{node} {desc|firstline}\n{markers % "description diff:\n```{descdiff}```\n"}'
@ 92210308515b A3
|
- x 4f1685185907
+ x 4f1685185907 A2
| description diff:
- | ``````
+ | ```
+ | [diff.diffline|diff -r 4f1685185907 -r 92210308515b changeset-description]
+ | [diff.file_a|--- a/changeset-description]
+ | [diff.file_b|+++ b/changeset-description]
+ | [diff.hunk|@@ -1,3 +1,3 @@]
+ | [diff.deleted|-A2]
+ | [diff.inserted|+A3]
+ |
+ | [diff.deleted|-Better better commit message]
+ | [diff.inserted|+Better better better commit message]
+ | ```
x 4ae3a4151de9 A1
| description diff:
- | ``````
- x 471f378eab4c
+ | ```
+ | [diff.diffline|diff -r 4ae3a4151de9 -r 4f1685185907 changeset-description]
+ | [diff.file_a|--- a/changeset-description]
+ | [diff.file_b|+++ b/changeset-description]
+ | [diff.hunk|@@ -1,3 +1,3 @@]
+ | [diff.deleted|-A1]
+ | [diff.inserted|+A2]
+ |
+ | [diff.deleted|-Better commit message]
+ | [diff.inserted|+Better better commit message]
+ | ```
+ x 471f378eab4c A0
description diff:
- ``````
+ ```
+ [diff.diffline|diff -r 471f378eab4c -r 4ae3a4151de9 changeset-description]
+ [diff.file_a|--- a/changeset-description]
+ [diff.file_b|+++ b/changeset-description]
+ [diff.hunk|@@ -1,1 +1,3 @@]
+ [diff.deleted|-A0]
+ [diff.inserted|+A1]
+ [diff.inserted|+]
+ [diff.inserted|+Better commit message]
+ ```
Check the output on the server
------------------------------