view mercurial/templates/map-cmdline.status @ 25006:517763f87141

log: add a status template It appears that git users like having a --name-status option on `git log`. There exist at least three questions on StackOverflow on how to do this for hg. The desired output is not difficult to build with templates, and since this is something that svn users might also want, it seems desirable to have this as another standard template. This mimics the output of `hg status` and adds it to the log output. It also follows status's convention of displaying copies with a -C option. Brief example: $ hg log -T status -C changeset: 24883:7d1b9b7ac9fd bookmark: statustemplate tag: tip parent: 24864:c560d8c68791 user: Jordi GutiƩrrez Hermoso <jordigh@octave.org> date: Wed Apr 22 14:05:04 2015 -0400 summary: log: add a status template files: A added A copied original M modified R removed Of course, everything is also coloured correctly, and there are tests to prove it.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Sun, 10 May 2015 14:04:43 -0400
parents
children 9c647f427aef
line wrap: on
line source

%include map-cmdline.default

# Override base templates
changeset = '{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{summary}{lfiles}\n'
changeset_verbose = '{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{description}{lfiles}\n'
changeset_debug = '{fullcset}{branches}{bookmarks}{tags}{lphase}{parents}{manifest}{user}{ldate}{extras}{description}{lfiles}\n'

# Override the file templates
lfiles = '{if(files,
              label('ui.note log.files',
                    'files:\n'))}{lfile_mods}{lfile_adds}{lfile_copies_switch}{lfile_dels}'

# Exclude copied files, will display those in lfile_copies_switch
lfile_adds  = '{file_adds % "{ifcontains(file, file_copies_switch,
                                         '',
                                         '{lfile_add}')}"}'
lfile_add = '{label("status.added", "A {file}\n")}'

lfile_copies_switch = '{file_copies_switch % "{lfile_copy_orig}{lfile_copy_dest}"'
lfile_copy_orig = '{label("status.added", "A {name}\n")}'
lfile_copy_dest = '{label("status.copied", "  {source}\n")}'

lfile_mods = '{file_mods % "{label('status.modified', 'M {file}\n')}"}'

lfile_dels = '{file_dels % "{label('status.removed', 'R {file}\n')}"}'