[PATCH] cmdutil: show diffs in commit message with ui.verbosecommit option
Martin Geisler
martin at geisler.net
Sat Jan 11 15:20:18 CST 2014
Jordi Gutiérrez Hermoso <jordigh at octave.org> writes:
> # HG changeset patch
> # User Jordi Gutiérrez Hermoso <jordigh at octave.org>
> # Date 1373469596 14400
> # Wed Jul 10 11:19:56 2013 -0400
> # Node ID b40695568db84a43b24cffb4c32583a759d96b09
> # Parent 01bdccfeb9d98ae85388d06c9c694b946f346edf
> cmdutil: show diffs in commit message with ui.verbosecommit option
I know people have been asking for this, but I've never really
understood why: I simply run 'hg diff' in another terminal or take a
peek in TortoiseHg. If the diff is substantial, having it dumped into
the commit message buffer wont help me much -- I will want at least to
have color highlighting and probably a real diff tool to see what's
going on.
Also, the recommended way to do this today is to set your editor to a
script which will run 'hg diff' for you before starting your real
editor.
> The following adds an option, ui.verbosecommit, which displays the
> entire diff about to be committed in the text editor window,
If this goes in, then I suggest using a more descriptive name than
ui.verbosecommit. Maybe ui.commitmsgdiff so that the scope of the
setting is more well-defined.
> prefixed with "HG:". This is useful as a final reminder of what's
> about to be committed while writing the commit message.
>
> diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py
> +++ b/mercurial/cmdutil.py
> @@ -1864,6 +1864,12 @@
> edittext.extend([_("HG: added %s") % f for f in added])
> edittext.extend([_("HG: changed %s") % f for f in modified])
> edittext.extend([_("HG: removed %s") % f for f in removed])
> + if repo.ui.config("ui","verbosecommit"):
> + edittext.append("HG: ")
> + diff = ctx.diff()
> + for f in diff:
> + for l in f.split("\n"):
> + edittext.extend([_("HG: %s") % l])
You should probably either use
for l in f.split("\n"):
edittext.append(_("HG: %s") % l)
or
edittext.extend([_("HG: %s") % l for l in f.split("\n")])
That is, either append single lines or extend the list with all lines in
one go.
--
Martin Geisler
More information about the Mercurial-devel
mailing list