mirror of
https://github.com/facebook/sapling.git
synced 2024-10-06 23:07:18 +03:00
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:a08f05e3a9cf 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.
This commit is contained in:
parent
442532d14b
commit
da35c599bb
25
mercurial/templates/map-cmdline.status
Normal file
25
mercurial/templates/map-cmdline.status
Normal file
@ -0,0 +1,25 @@
|
||||
%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')}"}'
|
@ -992,11 +992,11 @@ Error if no style:
|
||||
|
||||
$ hg log --style notexist
|
||||
abort: style 'notexist' not found
|
||||
(available styles: bisect, changelog, compact, default, phases, xml)
|
||||
(available styles: bisect, changelog, compact, default, phases, status, xml)
|
||||
[255]
|
||||
|
||||
$ hg log -T list
|
||||
available styles: bisect, changelog, compact, default, phases, xml
|
||||
available styles: bisect, changelog, compact, default, phases, status, xml
|
||||
abort: specify a template
|
||||
[255]
|
||||
|
||||
@ -2013,6 +2013,147 @@ Add a commit that does all possible modifications at once
|
||||
$ hg rm a
|
||||
$ hg ci -m "Modify, add, remove, rename"
|
||||
|
||||
Check the status template
|
||||
|
||||
$ cat <<EOF >> $HGRCPATH
|
||||
> [extensions]
|
||||
> color=
|
||||
> EOF
|
||||
|
||||
$ hg log -T status -r 10
|
||||
changeset: 10:0f9759ec227a
|
||||
tag: tip
|
||||
user: test
|
||||
date: Thu Jan 01 00:00:00 1970 +0000
|
||||
summary: Modify, add, remove, rename
|
||||
files:
|
||||
M third
|
||||
A b
|
||||
A fifth
|
||||
R a
|
||||
R fourth
|
||||
|
||||
$ hg log -T status -C -r 10
|
||||
changeset: 10:0f9759ec227a
|
||||
tag: tip
|
||||
user: test
|
||||
date: Thu Jan 01 00:00:00 1970 +0000
|
||||
summary: Modify, add, remove, rename
|
||||
files:
|
||||
M third
|
||||
A b
|
||||
A fifth
|
||||
fourth
|
||||
R a
|
||||
R fourth
|
||||
|
||||
$ hg log -T status -C -r 10 -v
|
||||
changeset: 10:0f9759ec227a
|
||||
tag: tip
|
||||
user: test
|
||||
date: Thu Jan 01 00:00:00 1970 +0000
|
||||
description:
|
||||
Modify, add, remove, rename
|
||||
|
||||
files:
|
||||
M third
|
||||
A b
|
||||
A fifth
|
||||
fourth
|
||||
R a
|
||||
R fourth
|
||||
|
||||
$ hg log -T status -C -r 10 --debug
|
||||
changeset: 10:0f9759ec227a4859c2014a345cd8a859022b7c6c
|
||||
tag: tip
|
||||
phase: secret
|
||||
parent: 9:bf9dfba36635106d6a73ccc01e28b762da60e066
|
||||
parent: -1:0000000000000000000000000000000000000000
|
||||
manifest: 8:89dd546f2de0a9d6d664f58d86097eb97baba567
|
||||
user: test
|
||||
date: Thu Jan 01 00:00:00 1970 +0000
|
||||
extra: branch=default
|
||||
description:
|
||||
Modify, add, remove, rename
|
||||
|
||||
files:
|
||||
M third
|
||||
A b
|
||||
A fifth
|
||||
fourth
|
||||
R a
|
||||
R fourth
|
||||
|
||||
$ hg log -T status -C -r 10 --quiet
|
||||
10:0f9759ec227a
|
||||
$ hg --color=debug log -T status -r 10
|
||||
[log.changeset changeset.secret|changeset: 10:0f9759ec227a]
|
||||
[log.tag|tag: tip]
|
||||
[log.user|user: test]
|
||||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000]
|
||||
[log.summary|summary: Modify, add, remove, rename]
|
||||
[ui.note log.files|files:]
|
||||
[status.modified|M third]
|
||||
[status.added|A b]
|
||||
[status.added|A fifth]
|
||||
[status.removed|R a]
|
||||
[status.removed|R fourth]
|
||||
|
||||
$ hg --color=debug log -T status -C -r 10
|
||||
[log.changeset changeset.secret|changeset: 10:0f9759ec227a]
|
||||
[log.tag|tag: tip]
|
||||
[log.user|user: test]
|
||||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000]
|
||||
[log.summary|summary: Modify, add, remove, rename]
|
||||
[ui.note log.files|files:]
|
||||
[status.modified|M third]
|
||||
[status.added|A b]
|
||||
[status.added|A fifth]
|
||||
[status.copied| fourth]
|
||||
[status.removed|R a]
|
||||
[status.removed|R fourth]
|
||||
|
||||
$ hg --color=debug log -T status -C -r 10 -v
|
||||
[log.changeset changeset.secret|changeset: 10:0f9759ec227a]
|
||||
[log.tag|tag: tip]
|
||||
[log.user|user: test]
|
||||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000]
|
||||
[ui.note log.description|description:]
|
||||
[ui.note log.description|Modify, add, remove, rename]
|
||||
|
||||
[ui.note log.files|files:]
|
||||
[status.modified|M third]
|
||||
[status.added|A b]
|
||||
[status.added|A fifth]
|
||||
[status.copied| fourth]
|
||||
[status.removed|R a]
|
||||
[status.removed|R fourth]
|
||||
|
||||
$ hg --color=debug log -T status -C -r 10 --debug
|
||||
[log.changeset changeset.secret|changeset: 10:0f9759ec227a4859c2014a345cd8a859022b7c6c]
|
||||
[log.tag|tag: tip]
|
||||
[log.phase|phase: secret]
|
||||
[log.parent changeset.secret|parent: 9:bf9dfba36635106d6a73ccc01e28b762da60e066]
|
||||
[log.parent changeset.public|parent: -1:0000000000000000000000000000000000000000]
|
||||
[ui.debug log.manifest|manifest: 8:89dd546f2de0a9d6d664f58d86097eb97baba567]
|
||||
[log.user|user: test]
|
||||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000]
|
||||
[ui.debug log.extra|extra: branch=default]
|
||||
[ui.note log.description|description:]
|
||||
[ui.note log.description|Modify, add, remove, rename]
|
||||
|
||||
[ui.note log.files|files:]
|
||||
[status.modified|M third]
|
||||
[status.added|A b]
|
||||
[status.added|A fifth]
|
||||
[status.copied| fourth]
|
||||
[status.removed|R a]
|
||||
[status.removed|R fourth]
|
||||
|
||||
$ hg --color=debug log -T status -C -r 10 --quiet
|
||||
[log.node|10:0f9759ec227a]
|
||||
|
||||
|
||||
Error on syntax:
|
||||
|
||||
$ echo 'x = "f' >> t
|
||||
|
@ -148,7 +148,7 @@ log on directory
|
||||
|
||||
$ hg log -f -l1 --style something
|
||||
abort: style 'something' not found
|
||||
(available styles: bisect, changelog, compact, default, phases, xml)
|
||||
(available styles: bisect, changelog, compact, default, phases, status, xml)
|
||||
[255]
|
||||
|
||||
-f, phases style
|
||||
|
Loading…
Reference in New Issue
Block a user