Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get mercurial to show the diff during `hg com`?

Tags:

diff

mercurial

Is there a way to configure hg com so that in the commit message file that pops up in the external editor, instead of just showing which files were changed (in the HG: lines) it actually shows the full diff? I'd rather view the output and compose my commit message simultaneously from the comfort of my text editor as opposed to doing hg diff on the command line separately beforehand.

like image 938
Kev Avatar asked Apr 21 '10 13:04

Kev


2 Answers

As of 2016, it's possible to do this with the committemplate configuration option. Adding the following to an hgrc file will include the diff in the editor window inline as you type your commit message.

[committemplate]
changeset = {desc}\n\n
    HG: {extramsg}
    HG: user: {author}\n{ifeq(p2rev, "-1", "",
   "HG: branch merge\n")
   }HG: branch '{branch}'\n{if(currentbookmark,
   "HG: bookmark '{currentbookmark}'\n")  }{subrepos %
   "HG: subrepo {subrepo}\n"              }
   {splitlines(diff()) % 'HG: {line}\n'}

See hg help hgrc and search for committemplate for more information.

like image 169
ngoldbaum Avatar answered Nov 15 '22 11:11

ngoldbaum


Mercurial doesn't have that as a built-in feature, but it's easy to simulate in your editor (as launched by commit).

Here's an example using VIM: https://www.mercurial-scm.org/wiki/DiffsInCommitMessageInVIM

The hgeditor script https://www.mercurial-scm.org/hg/hg-stable/raw-file/tip/hgeditor provides further examples.

The basic jist is:

  1. at editor launch run hg diff redirecting to a temp file
  2. have your editor load both the commit message file and the diff
like image 31
Ry4an Brase Avatar answered Nov 15 '22 09:11

Ry4an Brase