[PATCH 1 of 2] templates: add whyunstable template keyword
Anton Shestakov
av6 at dwimlabs.net
Sat Apr 14 11:43:15 UTC 2018
# HG changeset patch
# User Anton Shestakov <av6 at dwimlabs.net>
# Date 1522054812 -28800
# Mon Mar 26 17:00:12 2018 +0800
# Node ID 987c05eac1801d0b919c874280d03f9e8cccb411
# Parent 8bacc09814ba5500d15fb40c472e84cb95ae2f99
templates: add whyunstable template keyword
diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -793,6 +793,28 @@ def showverbosity(context, mapping):
return 'verbose'
return ''
+ at templatekeyword('whyunstable', requires={'repo', 'ctx'})
+def showwhyunstable(context, mapping):
+ """List of dicts explaining all instabilities of a changeset.
+ (EXPERIMENTAL)
+ """
+ repo = context.resource(mapping, 'repo')
+ ctx = context.resource(mapping, 'ctx')
+
+ def formatnode(ctx):
+ return ' %s (%s)' % (scmutil.formatchangeid(ctx), ctx.phasestr())
+
+ entries = obsutil.whyunstable(repo, ctx)
+
+ for entry in entries:
+ if entry.get('divergentnodes'):
+ dnodes = entry['divergentnodes']
+ entry['divergentnodes'] = ''.join(formatnode(dnode)
+ for dnode in dnodes)
+
+ tmpl = '{instability}:{divergentnodes} {reason} {node|short}'
+ return templateutil.mappinglist(entries, tmpl=tmpl, sep='\n')
+
def loadkeyword(ui, extname, registrarobj):
"""Load template keyword from specified registrarobj
"""
diff --git a/tests/test-obsolete-divergent.t b/tests/test-obsolete-divergent.t
--- a/tests/test-obsolete-divergent.t
+++ b/tests/test-obsolete-divergent.t
@@ -721,6 +721,11 @@ Use scmutil.cleanupnodes API to create d
$ hg debugwhyunstable 1a2a9b5b0030
content-divergent: 70d5a63ca112acb3764bc1d7320ca90ea688d671 (draft) predecessor a178212c3433c4e77b573f6011e29affb8aefa33
+ $ hg log -r 1a2a9b5b0030 --hidden -T '{whyunstable}\n'
+ content-divergent: 4:70d5a63ca112 (draft) predecessor a178212c3433
+ $ hg log -r 1a2a9b5b0030 --hidden -T '{whyunstable%"{instability}:{divergentnodes} {reason} {node}\n"}'
+ content-divergent: 4:70d5a63ca112 (draft) predecessor a178212c3433c4e77b573f6011e29affb8aefa33
+
#if serve
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -1044,6 +1044,15 @@ test debugwhyunstable output
orphan: obsolete parent 3de5eca88c00aa039da7399a220f4a5221faa585
phase-divergent: immutable predecessor 245bde4270cd1072a27757984f9cda8ba26f08ca
+test whyunstable template keyword
+
+ $ hg log -r 50c51b361e60 -T '{whyunstable}\n'
+ orphan: obsolete parent 3de5eca88c00
+ phase-divergent: immutable predecessor 245bde4270cd
+ $ hg log -r 50c51b361e60 -T '{whyunstable%"{instability}: {reason} {node}\n"}'
+ orphan: obsolete parent 3de5eca88c00aa039da7399a220f4a5221faa585
+ phase-divergent: immutable predecessor 245bde4270cd1072a27757984f9cda8ba26f08ca
+
#if serve
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
More information about the Mercurial-devel
mailing list