Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mercurial log with one-liners

The regular hg log command gives output with at least 4 lines per changeset. For example

changeset:   238:03a214f2a1cf user:        My Name <[email protected]> date:        Thu Aug 26 09:49:32 2010 +0200 summary:     Added tag v1.1 for changeset f22fd3974361 

I mean to remember that there was a command to print a log in a more compact way what just had one line per changeset. A format that you could basically stick in a changelog.txt file and it would look nice.

Does that exist? Or am I mixing this with something I have seen with git or something else?

like image 428
Svish Avatar asked Aug 26 '10 12:08

Svish


People also ask

How do you pull in Mercurial?

Pull changes from the Mercurial upstream (Pull)From the main menu, choose Hg | Mercurial | Pull. Specify the required URL address of the source remote repository.

What is hg in terminal?

The hg command provides a command line interface to the Mercurial system.

What does hg update do?

Description. Update the repository's working directory to the specified changeset. If no changeset is specified, update to the tip of the current named branch and move the active bookmark (see hg help bookmarks). Update sets the working directory's parent revision to the specified changeset (see hg help parents).


1 Answers

You can use hg log with a --template option, e.g.:

hg log --template '{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n' 

This should show something like this (example from the GNU Emacs trunk I converted locally to an hg repository):

$ hg log --limit 5 --template '{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n' 36ab2e3f8ebd | 2010-09-08 16:54:00 +0200 | agustin: textmodes/ispell.el (ispell-valid-dictionary-list): Simplify logic. 9f3ac6d4a645 | 2010-09-08 16:42:54 +0200 | michael: Migrate to Tramp 2.2.  Rearrange load dependencies. 8c696d2a7695 | 2010-09-07 20:01:23 +0200 | agustin: Make sure original ispell arg list is initialized in (ispell-start-process). b5f110747072 | 2010-09-07 06:23:16 +0000 | yamaoka: gnus-html.el (gnus-html-wash-tags, gnus-html-put-image): Mark cid and internal images as deletable by `W D D'. b53cfb7d099e | 2010-09-07 01:20:19 +0000 | yamaoka: gnus-async.el (gnus-html-prefetch-images): Autoload it when compiling; (gnus-async-article-callback): Fix typo. $ 

Once you have a nice template for one-line summaries of changesets, you can add a command alias in your ~/.hgrc file like this:

[alias] shortlog = log --template '{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n' 

With the alias installed you can now type hg shortlog, hg short or even hg shor (to uniquely identify hg shortlog instead of hg showconfig) and all the usual `log' command-options. For instance it should now be possible to type:

$ hg short -r 100:103 db9f8efcf689 | 1990-09-14 19:07:14 +0000 | jimb: *** empty log message *** 5874bf15e07d | 1990-09-19 18:22:41 +0000 | gnulists: Initial revision 797d304414fd | 1990-09-27 21:17:59 +0000 | mtr: Initial revision b2656b7830e4 | 1990-10-09 02:52:33 +0000 | rms: *** empty log message *** $ 

or even things that use tag names (example from the mercurial crew repository itself):

keramida@kobe:/hg/mercurial/crew$ hg short -r 1.4 -r 1.5 -r 1.6 31ec469f9b55 | 2009-11-16 21:25:36 +0100 | mg: i18n-ja: fixed bad indentation ff2704a8ded3 | 2010-03-05 17:24:52 -0600 | mpm: mq: drop -Q in favor of --mq only f786fc4b8764 | 2010-06-29 12:12:34 +0200 | mads: log: follow filenames through renames (issue647) keramida@kobe:/hg/mercurial/crew$ 
like image 76
Giorgos Keramidas Avatar answered Sep 23 '22 05:09

Giorgos Keramidas