rebase: make summary template configurable, with default to shared template
Differential Revision: https://phab.mercurial-scm.org/D9251
--- a/hgext/rebase.py Thu Oct 22 22:29:22 2020 -0700
+++ b/hgext/rebase.py Thu Oct 22 23:10:06 2020 -0700
@@ -34,7 +34,6 @@
dirstateguard,
error,
extensions,
- formatter,
merge as mergemod,
mergestate as mergestatemod,
mergeutil,
@@ -52,7 +51,6 @@
scmutil,
smartset,
state as statemod,
- templatekw,
util,
)
@@ -153,7 +151,9 @@
labels_spec,
labels_spec,
)
- return cmdutil.rendertemplate(ctx, spec)
+ return cmdutil.format_changeset_summary(
+ ctx.repo().ui, ctx, command=b'rebase', default_spec=spec
+ )
class rebaseruntime(object):
--- a/mercurial/cmdutil.py Thu Oct 22 22:29:22 2020 -0700
+++ b/mercurial/cmdutil.py Thu Oct 22 23:10:06 2020 -0700
@@ -1210,6 +1210,24 @@
return t.renderdefault(mapping)
+def format_changeset_summary(ui, ctx, command=None, default_spec=None):
+ """Format a changeset summary (one line)."""
+ spec = None
+ if command:
+ spec = ui.config(
+ b'command-templates', b'oneline-summary.%s' % command, None
+ )
+ if not spec:
+ spec = ui.config(b'command-templates', b'oneline-summary')
+ if not spec:
+ spec = default_spec
+ if not spec:
+ # TODO: Pick a default we can agree on. This isn't used yet.
+ raise error.ProgrammingError(b"no default one-line summary defined yet")
+ text = rendertemplate(ctx, spec)
+ return text.split(b'\n')[0]
+
+
def _buildfntemplate(pat, total=None, seqno=None, revwidth=None, pathname=None):
r"""Convert old-style filename format string to template string
--- a/mercurial/configitems.py Thu Oct 22 22:29:22 2020 -0700
+++ b/mercurial/configitems.py Thu Oct 22 23:10:06 2020 -0700
@@ -251,6 +251,15 @@
default=None,
alias=[(b'ui', b'pre-merge-tool-output-template')],
)
+coreconfigitem(
+ b'command-templates', b'oneline-summary', default=None,
+)
+coreconfigitem(
+ b'command-templates',
+ b'oneline-summary.*',
+ default=dynamicdefault,
+ generic=True,
+)
_registerdiffopts(section=b'commands', configprefix=b'commit.interactive.')
coreconfigitem(
b'commands', b'commit.post-status', default=False,
--- a/tests/test-rebase-templates.t Thu Oct 22 22:29:22 2020 -0700
+++ b/tests/test-rebase-templates.t Thu Oct 22 23:10:06 2020 -0700
@@ -82,3 +82,21 @@
o 0:18d04c59bb5d Added a
+Respects command-templates.oneline-summary
+
+ $ hg rebase -r 7 -d 8 -n --config command-templates.oneline-summary='rev: {rev}'
+ starting dry-run rebase; repository will not be changed
+ rebasing rev: 7
+ note: not rebasing rev: 7, its destination already has all its changes
+ dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
+
+
+command-templates.oneline-summary.rebase overrides
+
+ $ hg rebase -r 7 -d 8 -n \
+ > --config command-templates.oneline-summary='global: {rev}' \
+ > --config command-templates.oneline-summary.rebase='override: {rev}'
+ starting dry-run rebase; repository will not be changed
+ rebasing override: 7
+ note: not rebasing override: 7, its destination already has all its changes
+ dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase