Submitter | Jordi Gutiérrez Hermoso |
---|---|
Date | May 2, 2015, 4:56 a.m. |
Message ID | <824b9b5a5521bfdb5325.1430542578@Iris> |
Download | mbox | patch |
Permalink | /patch/8849/ |
State | Superseded |
Commit | 517763f871412953e5ab064cf4def4c7171f7b58 |
Delegated to: | Augie Fackler |
Headers | show |
Comments
On 05/01/2015 09:56 PM, Jordi Gutiérrez Hermoso wrote: > # HG changeset patch > # User Jordi Gutiérrez Hermoso <jordigh@octave.org> > # Date 1430070569 14400 > # Sun Apr 26 13:49:29 2015 -0400 > # Node ID 824b9b5a5521bfdb5325fe3bb2498f8c3a5fbc94 > # Parent 384995922773c4c2e7086a1843afd91b94b259ef > log: add a status template This is quite and I'm probably +0 on this. I'm just a bit afraid of baroque template proliferation and exponential combination of all possibles options. What kind of other curiosity could be unleashed on us?
On Sat, May 02, 2015 at 12:56:18AM -0400, Jordi Gutiérrez Hermoso wrote: > # HG changeset patch > # User Jordi Gutiérrez Hermoso <jordigh@octave.org> > # Date 1430070569 14400 > # Sun Apr 26 13:49:29 2015 -0400 > # Node ID 824b9b5a5521bfdb5325fe3bb2498f8c3a5fbc94 > # Parent 384995922773c4c2e7086a1843afd91b94b259ef > 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:c63f278895cd > 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. > > diff --git a/mercurial/templates/map-cmdline.status b/mercurial/templates/map-cmdline.status > new file mode 100644 > --- /dev/null > +++ b/mercurial/templates/map-cmdline.status > @@ -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')}"}' > diff --git a/tests/test-command-template.t b/tests/test-command-template.t > --- a/tests/test-command-template.t > +++ b/tests/test-command-template.t > @@ -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] > > @@ -1993,6 +1993,154 @@ Upper/lower filters: > abort: template filter 'upper' is not compatible with keyword 'date' > [255] > > +Check the status template > + > + $ echo modify >> third > + $ touch b > + $ hg add b > + $ hg mv fourth fifth > + $ hg rm a > + $ hg ci -m "Modify, add, remove, rename" > + > + $ cat <<EOF >> $HGRCPATH > + > [extensions] > + > color= > + > EOF > + > + $ hg log -T status -r 10 > + changeset: 10:a36687bc872d > + 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:a36687bc872d > + 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:a36687bc872d > + 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:a36687bc872d9ad08feae013c15438019648982e > + tag: tip > + phase: secret > + parent: 9:7bd832dcd4d46e0861bb7831ef95a11fc5ce7910 > + parent: -1:0000000000000000000000000000000000000000 > + manifest: 8:143566811bab77de98a9e38aa77caa859c429bbe > + 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:a36687bc872d > + $ hg --color=debug log -T status -r 10 > + [log.changeset changeset.secret|changeset: 10:a36687bc872d] > + [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:a36687bc872d] > + [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:a36687bc872d] > + [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:a36687bc872d9ad08feae013c15438019648982e] > + [log.tag|tag: tip] > + [log.phase|phase: secret] > + [log.parent changeset.secret|parent: 9:7bd832dcd4d46e0861bb7831ef95a11fc5ce7910] > + [log.parent changeset.public|parent: -1:0000000000000000000000000000000000000000] > + [ui.debug log.manifest|manifest: 8:143566811bab77de98a9e38aa77caa859c429bbe] > + [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:a36687bc872d] > + > + > Error on syntax: > > $ echo 'x = "f' >> t > @@ -2547,7 +2695,9 @@ Test stringify on sub expressions > Test splitlines > > $ hg log -Gv -R a --template "{splitlines(desc) % 'foo {line}\n'}" > - @ foo future > + @ foo Modify, add, remove, rename > + | > + o foo future > | > o foo third > | > @@ -2581,6 +2731,8 @@ Test startswith I like this patch, but I'm slightly confused by the test output changes down here. Are these changes expected? Can the changes to the test construction be split out of the test of the new feature so it's easier for me to figure out what's going on? > o > | > o > + | > + o > > o > |\ > @@ -2606,7 +2758,9 @@ Test bad template with better error mess > Test word function (including index out of bounds graceful failure) > > $ hg log -Gv -R a --template "{word('1', desc)}" > - @ > + @ add, > + | > + o > | > o > | > @@ -2630,7 +2784,9 @@ Test word function (including index out > Test word third parameter used as splitter > > $ hg log -Gv -R a --template "{word('0', desc, 'o')}" > - @ future > + @ M > + | > + o future > | > o third > | > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@selenic.com > http://selenic.com/mailman/listinfo/mercurial-devel
On Tue, 2015-05-05 at 10:40 -0400, Augie Fackler wrote: > On Sat, May 02, 2015 at 12:56:18AM -0400, Jordi Gutiérrez Hermoso wrote: > > # HG changeset patch > > # User Jordi Gutiérrez Hermoso <jordigh@octave.org> > > # Date 1430070569 14400 > > # Sun Apr 26 13:49:29 2015 -0400 > > # Node ID 824b9b5a5521bfdb5325fe3bb2498f8c3a5fbc94 > > # Parent 384995922773c4c2e7086a1843afd91b94b259ef > > log: add a status template > I like this patch, but I'm slightly confused by the test output > changes down here. Are these changes expected? Can the changes to the > test construction be split out of the test of the new feature so it's > easier for me to figure out what's going on? My patch added a new commit and that commit also changed the output of a few other tests. I thought it was innocuous to let it be, and one extra commit might expose other codepaths in the future. Would you prefer I instead strip that extra commit before proceeding with the other tests?
On Tue, May 5, 2015 at 11:26 AM, Jordi Gutiérrez Hermoso <jordigh@octave.org> wrote: > On Tue, 2015-05-05 at 10:40 -0400, Augie Fackler wrote: >> On Sat, May 02, 2015 at 12:56:18AM -0400, Jordi Gutiérrez Hermoso wrote: >> > # HG changeset patch >> > # User Jordi Gutiérrez Hermoso <jordigh@octave.org> >> > # Date 1430070569 14400 >> > # Sun Apr 26 13:49:29 2015 -0400 >> > # Node ID 824b9b5a5521bfdb5325fe3bb2498f8c3a5fbc94 >> > # Parent 384995922773c4c2e7086a1843afd91b94b259ef >> > log: add a status template > >> I like this patch, but I'm slightly confused by the test output >> changes down here. Are these changes expected? Can the changes to the >> test construction be split out of the test of the new feature so it's >> easier for me to figure out what's going on? > > My patch added a new commit and that commit also changed the output of > a few other tests. I thought it was innocuous to let it be, and one > extra commit might expose other codepaths in the future. > > Would you prefer I instead strip that extra commit before proceeding > with the other tests? I'm perfectly content to let the commit live on - can you add the new commit in one patch and then the new functionality in a separate one? That'll ease my life as a reviewer.
On Mon, 2015-05-04 at 17:41 -0700, Pierre-Yves David wrote: > > On 05/01/2015 09:56 PM, Jordi Gutiérrez Hermoso wrote: > > # HG changeset patch > > # User Jordi Gutiérrez Hermoso <jordigh@octave.org> > > # Date 1430070569 14400 > > # Sun Apr 26 13:49:29 2015 -0400 > > # Node ID 824b9b5a5521bfdb5325fe3bb2498f8c3a5fbc94 > > # Parent 384995922773c4c2e7086a1843afd91b94b259ef > > log: add a status template > > This is quite and I'm probably +0 on this. I'm just a bit afraid of > baroque template proliferation and exponential combination of all > possibles options. Well, since there are three independent questions on how to do this specific template on StackOverflow, it seems like this case is interesting enough to warrant being part of the core templates.
Patch
diff --git a/mercurial/templates/map-cmdline.status b/mercurial/templates/map-cmdline.status new file mode 100644 --- /dev/null +++ b/mercurial/templates/map-cmdline.status @@ -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')}"}' diff --git a/tests/test-command-template.t b/tests/test-command-template.t --- a/tests/test-command-template.t +++ b/tests/test-command-template.t @@ -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] @@ -1993,6 +1993,154 @@ Upper/lower filters: abort: template filter 'upper' is not compatible with keyword 'date' [255] +Check the status template + + $ echo modify >> third + $ touch b + $ hg add b + $ hg mv fourth fifth + $ hg rm a + $ hg ci -m "Modify, add, remove, rename" + + $ cat <<EOF >> $HGRCPATH + > [extensions] + > color= + > EOF + + $ hg log -T status -r 10 + changeset: 10:a36687bc872d + 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:a36687bc872d + 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:a36687bc872d + 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:a36687bc872d9ad08feae013c15438019648982e + tag: tip + phase: secret + parent: 9:7bd832dcd4d46e0861bb7831ef95a11fc5ce7910 + parent: -1:0000000000000000000000000000000000000000 + manifest: 8:143566811bab77de98a9e38aa77caa859c429bbe + 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:a36687bc872d + $ hg --color=debug log -T status -r 10 + [log.changeset changeset.secret|changeset: 10:a36687bc872d] + [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:a36687bc872d] + [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:a36687bc872d] + [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:a36687bc872d9ad08feae013c15438019648982e] + [log.tag|tag: tip] + [log.phase|phase: secret] + [log.parent changeset.secret|parent: 9:7bd832dcd4d46e0861bb7831ef95a11fc5ce7910] + [log.parent changeset.public|parent: -1:0000000000000000000000000000000000000000] + [ui.debug log.manifest|manifest: 8:143566811bab77de98a9e38aa77caa859c429bbe] + [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:a36687bc872d] + + Error on syntax: $ echo 'x = "f' >> t @@ -2547,7 +2695,9 @@ Test stringify on sub expressions Test splitlines $ hg log -Gv -R a --template "{splitlines(desc) % 'foo {line}\n'}" - @ foo future + @ foo Modify, add, remove, rename + | + o foo future | o foo third | @@ -2581,6 +2731,8 @@ Test startswith o | o + | + o o |\ @@ -2606,7 +2758,9 @@ Test bad template with better error mess Test word function (including index out of bounds graceful failure) $ hg log -Gv -R a --template "{word('1', desc)}" - @ + @ add, + | + o | o | @@ -2630,7 +2784,9 @@ Test word function (including index out Test word third parameter used as splitter $ hg log -Gv -R a --template "{word('0', desc, 'o')}" - @ future + @ M + | + o future | o third |