changeset 12283:850e089eb41c

tests: unify test-command-template
author Adrian Buehlmann <adrian@cadifra.com>
date Tue, 14 Sep 2010 19:31:00 +0200
parents 9e457c3f47d9
children f7eb190310ef
files tests/test-command-template tests/test-command-template.out tests/test-command-template.t
diffstat 3 files changed, 1327 insertions(+), 1309 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-command-template	Tue Sep 14 22:11:53 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-#!/bin/sh
-
-hg init a
-cd a
-echo a > a
-hg add a
-echo line 1 > b
-echo line 2 >> b
-hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
-hg add b
-echo other 1 > c
-echo other 2 >> c
-echo >> c
-echo other 3 >> c
-hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
-hg add c
-hg commit -m 'no person' -d '1200000 0' -u 'other@place'
-echo c >> c
-hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
-echo foo > .hg/branch
-hg commit -m 'new branch' -d '1400000 0' -u 'person'
-hg co -q 3
-echo other 4 >> d
-hg add d
-hg commit -m 'new head' -d '1500000 0' -u 'person'
-hg merge -q foo
-hg commit -m 'merge' -d '1500001 0' -u 'person'
-# second branch starting at nullrev
-hg update null
-echo second > second
-hg add second
-hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
-echo third > third
-hg add third
-hg mv second fourth
-hg commit -m third -d "2020-01-01 10:01"
-
-# make sure user/global hgrc does not affect tests
-echo '[ui]' > .hg/hgrc
-echo 'logtemplate =' >> .hg/hgrc
-echo 'style =' >> .hg/hgrc
-
-echo '# default style is like normal output'
-echo '#  normal'
-hg log > log.out
-hg log --style default > style.out
-cmp log.out style.out || diff -u log.out style.out
-echo '#  verbose'
-hg log -v > log.out
-hg log -v --style default > style.out
-cmp log.out style.out || diff -u log.out style.out
-echo '#  debug'
-hg log --debug > log.out
-hg log --debug --style default > style.out
-cmp log.out style.out || diff -u log.out style.out
-
-echo '# revision with no copies (used to print a traceback)'
-hg tip -v --template '\n'
-
-echo '# compact style works'
-hg log --style compact
-hg log -v --style compact
-hg log --debug --style compact
-
-# Test xml styles
-echo '# xml style works (--style xml)'
-hg log --style xml
-echo '# xml style works (-v --style xml)'
-hg log -v --style xml
-echo '# xml style works (--debug --style xml)'
-hg log --debug --style xml
-
-echo '# error if style not readable'
-touch q
-chmod 0 q
-hg log --style ./q
-
-echo '# error if no style'
-hg log --style notexist
-
-echo '# error if style missing key'
-echo 'q = q' > t
-hg log --style ./t
-
-echo '# error if include fails'
-echo 'changeset = q' >> t
-hg log --style ./t
-
-echo '# include works'
-rm q
-echo '{rev}' > q
-hg log --style ./t
-
-echo '# ui.style works'
-echo '[ui]' > .hg/hgrc
-echo 'style = t' >> .hg/hgrc
-hg log
-
-echo '# issue338'
-hg log --style=changelog > changelog
-cat changelog
-
-echo '# issue 2130'
-hg heads --style changelog
-
-echo "# keys work"
-for key in author branches date desc file_adds file_dels file_mods \
-        file_copies file_copies_switch files \
-        manifest node parents rev tags diffstat extras; do
-    for mode in '' --verbose --debug; do
-        hg log $mode --template "$key$mode: {$key}\n"
-    done
-done
-
-echo '# filters work'
-hg log --template '{author|domain}\n'
-hg log --template '{author|person}\n'
-hg log --template '{author|user}\n'
-hg log --template '{date|age}\n' > /dev/null || exit 1
-hg log -l1 --template '{date|age}\n' 
-hg log --template '{date|date}\n'
-hg log --template '{date|isodate}\n'
-hg log --template '{date|isodatesec}\n'
-hg log --template '{date|rfc822date}\n'
-hg log --template '{desc|firstline}\n'
-hg log --template '{node|short}\n'
-hg log --template '<changeset author="{author|xmlescape}"/>\n'
-hg log --template '{rev}: {children}\n'
-
-echo '# formatnode filter works'
-echo '#  quiet'
-hg -q log -r 0 --template '{node|formatnode}\n'
-echo '#  normal'
-hg log -r 0 --template '{node|formatnode}\n'
-echo '#  verbose'
-hg -v log -r 0 --template '{node|formatnode}\n'
-echo '#  debug'
-hg --debug log -r 0 --template '{node|formatnode}\n'
-
-echo '# error on syntax'
-echo 'x = "f' >> t
-hg log
-
-cd ..
-
-echo '# latesttag'
-hg init latesttag
-cd latesttag
-
-echo a > file
-hg ci -Am a -d '0 0'
-
-echo b >> file
-hg ci -m b -d '1 0'
-
-echo c >> head1
-hg ci -Am h1c -d '2 0'
-
-hg update -q 1
-echo d >> head2
-hg ci -Am h2d -d '3 0'
-
-echo e >> head2
-hg ci -m h2e -d '4 0'
-
-hg merge -q
-hg ci -m merge -d '5 0'
-
-echo '# No tag set'
-hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
-
-echo '# one common tag: longuest path wins'
-hg tag -r 1 -m t1 -d '6 0' t1
-hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
-
-echo '# one ancestor tag: more recent wins'
-hg tag -r 2 -m t2 -d '7 0' t2
-hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
-
-echo '# two branch tags: more recent wins'
-hg tag -r 3 -m t3 -d '8 0' t3
-hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
-
-echo '# merged tag overrides'
-hg tag -r 5 -m t5 -d '9 0' t5
-hg tag -r 3 -m at3 -d '10 0' at3
-hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
-cd ..
-
-echo '# style path expansion (issue1948)'
-mkdir -p home/styles
-cat > home/styles/teststyle <<EOF
-changeset = 'test {rev}:{node|short}\n'
-EOF
-HOME=`pwd`/home; export HOME
-cat > latesttag/.hg/hgrc <<EOF
-[ui]
-style = ~/styles/teststyle
-EOF
-hg -R latesttag tip
-
-echo '# test recursive showlist template (issue1989)'
-cat > style1989 <<EOF
-changeset = '{file_mods}{manifest}{extras}'
-file_mod  = 'M|{author|person}\n'
-manifest = '{rev},{author}\n'
-extra = '{key}: {author}\n'
-EOF
-hg -R latesttag log -r tip --style=style1989
-
-echo '# done'
--- a/tests/test-command-template.out	Tue Sep 14 22:11:53 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1098 +0,0 @@
-0 files updated, 0 files merged, 4 files removed, 0 files unresolved
-created new head
-# default style is like normal output
-#  normal
-#  verbose
-#  debug
-# revision with no copies (used to print a traceback)
-
-# compact style works
-8[tip]   95c24699272e   2020-01-01 10:01 +0000   test
-  third
-
-7:-1   29114dbae42b   1970-01-12 13:46 +0000   user
-  second
-
-6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
-  merge
-
-5:3   13207e5a10d9   1970-01-18 08:40 +0000   person
-  new head
-
-4   32a18f097fcc   1970-01-17 04:53 +0000   person
-  new branch
-
-3   10e46f2dcbf4   1970-01-16 01:06 +0000   person
-  no user, no domain
-
-2   97054abb4ab8   1970-01-14 21:20 +0000   other
-  no person
-
-1   b608e9d1a3f0   1970-01-13 17:33 +0000   other
-  other 1
-
-0   1e4e1b8f71e0   1970-01-12 13:46 +0000   user
-  line 1
-
-8[tip]   95c24699272e   2020-01-01 10:01 +0000   test
-  third
-
-7:-1   29114dbae42b   1970-01-12 13:46 +0000   User Name <user@hostname>
-  second
-
-6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
-  merge
-
-5:3   13207e5a10d9   1970-01-18 08:40 +0000   person
-  new head
-
-4   32a18f097fcc   1970-01-17 04:53 +0000   person
-  new branch
-
-3   10e46f2dcbf4   1970-01-16 01:06 +0000   person
-  no user, no domain
-
-2   97054abb4ab8   1970-01-14 21:20 +0000   other@place
-  no person
-
-1   b608e9d1a3f0   1970-01-13 17:33 +0000   A. N. Other <other@place>
-  other 1
-other 2
-
-other 3
-
-0   1e4e1b8f71e0   1970-01-12 13:46 +0000   User Name <user@hostname>
-  line 1
-line 2
-
-8[tip]:7,-1   95c24699272e   2020-01-01 10:01 +0000   test
-  third
-
-7:-1,-1   29114dbae42b   1970-01-12 13:46 +0000   User Name <user@hostname>
-  second
-
-6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
-  merge
-
-5:3,-1   13207e5a10d9   1970-01-18 08:40 +0000   person
-  new head
-
-4:3,-1   32a18f097fcc   1970-01-17 04:53 +0000   person
-  new branch
-
-3:2,-1   10e46f2dcbf4   1970-01-16 01:06 +0000   person
-  no user, no domain
-
-2:1,-1   97054abb4ab8   1970-01-14 21:20 +0000   other@place
-  no person
-
-1:0,-1   b608e9d1a3f0   1970-01-13 17:33 +0000   A. N. Other <other@place>
-  other 1
-other 2
-
-other 3
-
-0:-1,-1   1e4e1b8f71e0   1970-01-12 13:46 +0000   User Name <user@hostname>
-  line 1
-line 2
-
-# xml style works (--style xml)
-<?xml version="1.0"?>
-<log>
-<logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
-<tag>tip</tag>
-<author email="test">test</author>
-<date>2020-01-01T10:01:00+00:00</date>
-<msg xml:space="preserve">third</msg>
-</logentry>
-<logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="user@hostname">User Name</author>
-<date>1970-01-12T13:46:40+00:00</date>
-<msg xml:space="preserve">second</msg>
-</logentry>
-<logentry revision="6" node="c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f">
-<parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
-<parent revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4" />
-<author email="person">person</author>
-<date>1970-01-18T08:40:01+00:00</date>
-<msg xml:space="preserve">merge</msg>
-</logentry>
-<logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
-<parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
-<author email="person">person</author>
-<date>1970-01-18T08:40:00+00:00</date>
-<msg xml:space="preserve">new head</msg>
-</logentry>
-<logentry revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4">
-<branch>foo</branch>
-<author email="person">person</author>
-<date>1970-01-17T04:53:20+00:00</date>
-<msg xml:space="preserve">new branch</msg>
-</logentry>
-<logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
-<author email="person">person</author>
-<date>1970-01-16T01:06:40+00:00</date>
-<msg xml:space="preserve">no user, no domain</msg>
-</logentry>
-<logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
-<author email="other@place">other</author>
-<date>1970-01-14T21:20:00+00:00</date>
-<msg xml:space="preserve">no person</msg>
-</logentry>
-<logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
-<author email="other@place">A. N. Other</author>
-<date>1970-01-13T17:33:20+00:00</date>
-<msg xml:space="preserve">other 1
-other 2
-
-other 3</msg>
-</logentry>
-<logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
-<author email="user@hostname">User Name</author>
-<date>1970-01-12T13:46:40+00:00</date>
-<msg xml:space="preserve">line 1
-line 2</msg>
-</logentry>
-</log>
-# xml style works (-v --style xml)
-<?xml version="1.0"?>
-<log>
-<logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
-<tag>tip</tag>
-<author email="test">test</author>
-<date>2020-01-01T10:01:00+00:00</date>
-<msg xml:space="preserve">third</msg>
-<paths>
-<path action="A">fourth</path>
-<path action="A">third</path>
-<path action="R">second</path>
-</paths>
-<copies>
-<copy source="second">fourth</copy>
-</copies>
-</logentry>
-<logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="user@hostname">User Name</author>
-<date>1970-01-12T13:46:40+00:00</date>
-<msg xml:space="preserve">second</msg>
-<paths>
-<path action="A">second</path>
-</paths>
-</logentry>
-<logentry revision="6" node="c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f">
-<parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
-<parent revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4" />
-<author email="person">person</author>
-<date>1970-01-18T08:40:01+00:00</date>
-<msg xml:space="preserve">merge</msg>
-<paths>
-</paths>
-</logentry>
-<logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
-<parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
-<author email="person">person</author>
-<date>1970-01-18T08:40:00+00:00</date>
-<msg xml:space="preserve">new head</msg>
-<paths>
-<path action="A">d</path>
-</paths>
-</logentry>
-<logentry revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4">
-<branch>foo</branch>
-<author email="person">person</author>
-<date>1970-01-17T04:53:20+00:00</date>
-<msg xml:space="preserve">new branch</msg>
-<paths>
-</paths>
-</logentry>
-<logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
-<author email="person">person</author>
-<date>1970-01-16T01:06:40+00:00</date>
-<msg xml:space="preserve">no user, no domain</msg>
-<paths>
-<path action="M">c</path>
-</paths>
-</logentry>
-<logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
-<author email="other@place">other</author>
-<date>1970-01-14T21:20:00+00:00</date>
-<msg xml:space="preserve">no person</msg>
-<paths>
-<path action="A">c</path>
-</paths>
-</logentry>
-<logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
-<author email="other@place">A. N. Other</author>
-<date>1970-01-13T17:33:20+00:00</date>
-<msg xml:space="preserve">other 1
-other 2
-
-other 3</msg>
-<paths>
-<path action="A">b</path>
-</paths>
-</logentry>
-<logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
-<author email="user@hostname">User Name</author>
-<date>1970-01-12T13:46:40+00:00</date>
-<msg xml:space="preserve">line 1
-line 2</msg>
-<paths>
-<path action="A">a</path>
-</paths>
-</logentry>
-</log>
-# xml style works (--debug --style xml)
-<?xml version="1.0"?>
-<log>
-<logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
-<tag>tip</tag>
-<parent revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="test">test</author>
-<date>2020-01-01T10:01:00+00:00</date>
-<msg xml:space="preserve">third</msg>
-<paths>
-<path action="A">fourth</path>
-<path action="A">third</path>
-<path action="R">second</path>
-</paths>
-<copies>
-<copy source="second">fourth</copy>
-</copies>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="user@hostname">User Name</author>
-<date>1970-01-12T13:46:40+00:00</date>
-<msg xml:space="preserve">second</msg>
-<paths>
-<path action="A">second</path>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="6" node="c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f">
-<parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
-<parent revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4" />
-<author email="person">person</author>
-<date>1970-01-18T08:40:01+00:00</date>
-<msg xml:space="preserve">merge</msg>
-<paths>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
-<parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="person">person</author>
-<date>1970-01-18T08:40:00+00:00</date>
-<msg xml:space="preserve">new head</msg>
-<paths>
-<path action="A">d</path>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4">
-<branch>foo</branch>
-<parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="person">person</author>
-<date>1970-01-17T04:53:20+00:00</date>
-<msg xml:space="preserve">new branch</msg>
-<paths>
-</paths>
-<extra key="branch">foo</extra>
-</logentry>
-<logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
-<parent revision="2" node="97054abb4ab824450e9164180baf491ae0078465" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="person">person</author>
-<date>1970-01-16T01:06:40+00:00</date>
-<msg xml:space="preserve">no user, no domain</msg>
-<paths>
-<path action="M">c</path>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
-<parent revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="other@place">other</author>
-<date>1970-01-14T21:20:00+00:00</date>
-<msg xml:space="preserve">no person</msg>
-<paths>
-<path action="A">c</path>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
-<parent revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="other@place">A. N. Other</author>
-<date>1970-01-13T17:33:20+00:00</date>
-<msg xml:space="preserve">other 1
-other 2
-
-other 3</msg>
-<paths>
-<path action="A">b</path>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-<logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<parent revision="-1" node="0000000000000000000000000000000000000000" />
-<author email="user@hostname">User Name</author>
-<date>1970-01-12T13:46:40+00:00</date>
-<msg xml:space="preserve">line 1
-line 2</msg>
-<paths>
-<path action="A">a</path>
-</paths>
-<extra key="branch">default</extra>
-</logentry>
-</log>
-# error if style not readable
-abort: Permission denied: ./q
-# error if no style
-abort: style not found: notexist
-# error if style missing key
-abort: ./t: no key named 'changeset'
-# error if include fails
-abort: template file ./q: Permission denied
-# include works
-8
-7
-6
-5
-4
-3
-2
-1
-0
-# ui.style works
-8
-7
-6
-5
-4
-3
-2
-1
-0
-# issue338
-2020-01-01  test  <test>
-
-	* fourth, second, third:
-	third
-	[95c24699272e] [tip]
-
-1970-01-12  User Name  <user@hostname>
-
-	* second:
-	second
-	[29114dbae42b]
-
-1970-01-18  person  <person>
-
-	* merge
-	[c7b487c6c50e]
-
-	* d:
-	new head
-	[13207e5a10d9]
-
-1970-01-17  person  <person>
-
-	* new branch
-	[32a18f097fcc] <foo>
-
-1970-01-16  person  <person>
-
-	* c:
-	no user, no domain
-	[10e46f2dcbf4]
-
-1970-01-14  other  <other@place>
-
-	* c:
-	no person
-	[97054abb4ab8]
-
-1970-01-13  A. N. Other  <other@place>
-
-	* b:
-	other 1 other 2
-
-	other 3
-	[b608e9d1a3f0]
-
-1970-01-12  User Name  <user@hostname>
-
-	* a:
-	line 1 line 2
-	[1e4e1b8f71e0]
-
-# issue 2130
-2020-01-01  test  <test>
-
-	* fourth, second, third:
-	third
-	[95c24699272e] [tip]
-
-1970-01-18  person  <person>
-
-	* merge
-	[c7b487c6c50e]
-
-1970-01-17  person  <person>
-
-	* new branch
-	[32a18f097fcc] <foo>
-
-# keys work
-author: test
-author: User Name <user@hostname>
-author: person
-author: person
-author: person
-author: person
-author: other@place
-author: A. N. Other <other@place>
-author: User Name <user@hostname>
-author--verbose: test
-author--verbose: User Name <user@hostname>
-author--verbose: person
-author--verbose: person
-author--verbose: person
-author--verbose: person
-author--verbose: other@place
-author--verbose: A. N. Other <other@place>
-author--verbose: User Name <user@hostname>
-author--debug: test
-author--debug: User Name <user@hostname>
-author--debug: person
-author--debug: person
-author--debug: person
-author--debug: person
-author--debug: other@place
-author--debug: A. N. Other <other@place>
-author--debug: User Name <user@hostname>
-branches: 
-branches: 
-branches: 
-branches: 
-branches: foo
-branches: 
-branches: 
-branches: 
-branches: 
-branches--verbose: 
-branches--verbose: 
-branches--verbose: 
-branches--verbose: 
-branches--verbose: foo
-branches--verbose: 
-branches--verbose: 
-branches--verbose: 
-branches--verbose: 
-branches--debug: 
-branches--debug: 
-branches--debug: 
-branches--debug: 
-branches--debug: foo
-branches--debug: 
-branches--debug: 
-branches--debug: 
-branches--debug: 
-date: 1577872860.00
-date: 1000000.00
-date: 1500001.00
-date: 1500000.00
-date: 1400000.00
-date: 1300000.00
-date: 1200000.00
-date: 1100000.00
-date: 1000000.00
-date--verbose: 1577872860.00
-date--verbose: 1000000.00
-date--verbose: 1500001.00
-date--verbose: 1500000.00
-date--verbose: 1400000.00
-date--verbose: 1300000.00
-date--verbose: 1200000.00
-date--verbose: 1100000.00
-date--verbose: 1000000.00
-date--debug: 1577872860.00
-date--debug: 1000000.00
-date--debug: 1500001.00
-date--debug: 1500000.00
-date--debug: 1400000.00
-date--debug: 1300000.00
-date--debug: 1200000.00
-date--debug: 1100000.00
-date--debug: 1000000.00
-desc: third
-desc: second
-desc: merge
-desc: new head
-desc: new branch
-desc: no user, no domain
-desc: no person
-desc: other 1
-other 2
-
-other 3
-desc: line 1
-line 2
-desc--verbose: third
-desc--verbose: second
-desc--verbose: merge
-desc--verbose: new head
-desc--verbose: new branch
-desc--verbose: no user, no domain
-desc--verbose: no person
-desc--verbose: other 1
-other 2
-
-other 3
-desc--verbose: line 1
-line 2
-desc--debug: third
-desc--debug: second
-desc--debug: merge
-desc--debug: new head
-desc--debug: new branch
-desc--debug: no user, no domain
-desc--debug: no person
-desc--debug: other 1
-other 2
-
-other 3
-desc--debug: line 1
-line 2
-file_adds: fourth third
-file_adds: second
-file_adds: 
-file_adds: d
-file_adds: 
-file_adds: 
-file_adds: c
-file_adds: b
-file_adds: a
-file_adds--verbose: fourth third
-file_adds--verbose: second
-file_adds--verbose: 
-file_adds--verbose: d
-file_adds--verbose: 
-file_adds--verbose: 
-file_adds--verbose: c
-file_adds--verbose: b
-file_adds--verbose: a
-file_adds--debug: fourth third
-file_adds--debug: second
-file_adds--debug: 
-file_adds--debug: d
-file_adds--debug: 
-file_adds--debug: 
-file_adds--debug: c
-file_adds--debug: b
-file_adds--debug: a
-file_dels: second
-file_dels: 
-file_dels: 
-file_dels: 
-file_dels: 
-file_dels: 
-file_dels: 
-file_dels: 
-file_dels: 
-file_dels--verbose: second
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--verbose: 
-file_dels--debug: second
-file_dels--debug: 
-file_dels--debug: 
-file_dels--debug: 
-file_dels--debug: 
-file_dels--debug: 
-file_dels--debug: 
-file_dels--debug: 
-file_dels--debug: 
-file_mods: 
-file_mods: 
-file_mods: 
-file_mods: 
-file_mods: 
-file_mods: c
-file_mods: 
-file_mods: 
-file_mods: 
-file_mods--verbose: 
-file_mods--verbose: 
-file_mods--verbose: 
-file_mods--verbose: 
-file_mods--verbose: 
-file_mods--verbose: c
-file_mods--verbose: 
-file_mods--verbose: 
-file_mods--verbose: 
-file_mods--debug: 
-file_mods--debug: 
-file_mods--debug: 
-file_mods--debug: 
-file_mods--debug: 
-file_mods--debug: c
-file_mods--debug: 
-file_mods--debug: 
-file_mods--debug: 
-file_copies: fourth (second)
-file_copies: 
-file_copies: 
-file_copies: 
-file_copies: 
-file_copies: 
-file_copies: 
-file_copies: 
-file_copies: 
-file_copies--verbose: fourth (second)
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--verbose: 
-file_copies--debug: fourth (second)
-file_copies--debug: 
-file_copies--debug: 
-file_copies--debug: 
-file_copies--debug: 
-file_copies--debug: 
-file_copies--debug: 
-file_copies--debug: 
-file_copies--debug: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--verbose: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-file_copies_switch--debug: 
-files: fourth second third
-files: second
-files: 
-files: d
-files: 
-files: c
-files: c
-files: b
-files: a
-files--verbose: fourth second third
-files--verbose: second
-files--verbose: 
-files--verbose: d
-files--verbose: 
-files--verbose: c
-files--verbose: c
-files--verbose: b
-files--verbose: a
-files--debug: fourth second third
-files--debug: second
-files--debug: 
-files--debug: d
-files--debug: 
-files--debug: c
-files--debug: c
-files--debug: b
-files--debug: a
-manifest: 8:94961b75a2da
-manifest: 7:f2dbc354b94e
-manifest: 6:91015e9dbdd7
-manifest: 5:4dc3def4f9b4
-manifest: 4:90ae8dda64e1
-manifest: 3:cb5a1327723b
-manifest: 2:6e0e82995c35
-manifest: 1:4e8d705b1e53
-manifest: 0:a0c8bcbbb45c
-manifest--verbose: 8:94961b75a2da
-manifest--verbose: 7:f2dbc354b94e
-manifest--verbose: 6:91015e9dbdd7
-manifest--verbose: 5:4dc3def4f9b4
-manifest--verbose: 4:90ae8dda64e1
-manifest--verbose: 3:cb5a1327723b
-manifest--verbose: 2:6e0e82995c35
-manifest--verbose: 1:4e8d705b1e53
-manifest--verbose: 0:a0c8bcbbb45c
-manifest--debug: 8:94961b75a2da554b4df6fb599e5bfc7d48de0c64
-manifest--debug: 7:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
-manifest--debug: 6:91015e9dbdd76a6791085d12b0a0ec7fcd22ffbf
-manifest--debug: 5:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
-manifest--debug: 4:90ae8dda64e1a876c792bccb9af66284f6018363
-manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
-manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
-manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
-manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
-node: 95c24699272ef57d062b8bccc32c878bf841784a
-node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
-node: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
-node: 13207e5a10d9fd28ec424934298e176197f2c67f
-node: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
-node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
-node: 97054abb4ab824450e9164180baf491ae0078465
-node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
-node: 1e4e1b8f71e05681d422154f5421e385fec3454f
-node--verbose: 95c24699272ef57d062b8bccc32c878bf841784a
-node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
-node--verbose: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
-node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
-node--verbose: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
-node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
-node--verbose: 97054abb4ab824450e9164180baf491ae0078465
-node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
-node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
-node--debug: 95c24699272ef57d062b8bccc32c878bf841784a
-node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
-node--debug: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
-node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
-node--debug: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
-node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
-node--debug: 97054abb4ab824450e9164180baf491ae0078465
-node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
-node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
-parents: 
-parents: -1:000000000000 
-parents: 5:13207e5a10d9 4:32a18f097fcc 
-parents: 3:10e46f2dcbf4 
-parents: 
-parents: 
-parents: 
-parents: 
-parents: 
-parents--verbose: 
-parents--verbose: -1:000000000000 
-parents--verbose: 5:13207e5a10d9 4:32a18f097fcc 
-parents--verbose: 3:10e46f2dcbf4 
-parents--verbose: 
-parents--verbose: 
-parents--verbose: 
-parents--verbose: 
-parents--verbose: 
-parents--debug: 7:29114dbae42b9f078cf2714dbe3a86bba8ec7453 -1:0000000000000000000000000000000000000000 
-parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
-parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:32a18f097fcccf76ef282f62f8a85b3adf8d13c4 
-parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
-parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
-parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000 
-parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000 
-parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000 
-parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
-rev: 8
-rev: 7
-rev: 6
-rev: 5
-rev: 4
-rev: 3
-rev: 2
-rev: 1
-rev: 0
-rev--verbose: 8
-rev--verbose: 7
-rev--verbose: 6
-rev--verbose: 5
-rev--verbose: 4
-rev--verbose: 3
-rev--verbose: 2
-rev--verbose: 1
-rev--verbose: 0
-rev--debug: 8
-rev--debug: 7
-rev--debug: 6
-rev--debug: 5
-rev--debug: 4
-rev--debug: 3
-rev--debug: 2
-rev--debug: 1
-rev--debug: 0
-tags: tip
-tags: 
-tags: 
-tags: 
-tags: 
-tags: 
-tags: 
-tags: 
-tags: 
-tags--verbose: tip
-tags--verbose: 
-tags--verbose: 
-tags--verbose: 
-tags--verbose: 
-tags--verbose: 
-tags--verbose: 
-tags--verbose: 
-tags--verbose: 
-tags--debug: tip
-tags--debug: 
-tags--debug: 
-tags--debug: 
-tags--debug: 
-tags--debug: 
-tags--debug: 
-tags--debug: 
-tags--debug: 
-diffstat: 3: +2/-1
-diffstat: 1: +1/-0
-diffstat: 0: +0/-0
-diffstat: 1: +1/-0
-diffstat: 0: +0/-0
-diffstat: 1: +1/-0
-diffstat: 1: +4/-0
-diffstat: 1: +2/-0
-diffstat: 1: +1/-0
-diffstat--verbose: 3: +2/-1
-diffstat--verbose: 1: +1/-0
-diffstat--verbose: 0: +0/-0
-diffstat--verbose: 1: +1/-0
-diffstat--verbose: 0: +0/-0
-diffstat--verbose: 1: +1/-0
-diffstat--verbose: 1: +4/-0
-diffstat--verbose: 1: +2/-0
-diffstat--verbose: 1: +1/-0
-diffstat--debug: 3: +2/-1
-diffstat--debug: 1: +1/-0
-diffstat--debug: 0: +0/-0
-diffstat--debug: 1: +1/-0
-diffstat--debug: 0: +0/-0
-diffstat--debug: 1: +1/-0
-diffstat--debug: 1: +4/-0
-diffstat--debug: 1: +2/-0
-diffstat--debug: 1: +1/-0
-extras: branch=default
-extras: branch=default
-extras: branch=default
-extras: branch=default
-extras: branch=foo
-extras: branch=default
-extras: branch=default
-extras: branch=default
-extras: branch=default
-extras--verbose: branch=default
-extras--verbose: branch=default
-extras--verbose: branch=default
-extras--verbose: branch=default
-extras--verbose: branch=foo
-extras--verbose: branch=default
-extras--verbose: branch=default
-extras--verbose: branch=default
-extras--verbose: branch=default
-extras--debug: branch=default
-extras--debug: branch=default
-extras--debug: branch=default
-extras--debug: branch=default
-extras--debug: branch=foo
-extras--debug: branch=default
-extras--debug: branch=default
-extras--debug: branch=default
-extras--debug: branch=default
-# filters work
-
-hostname
-
-
-
-
-place
-place
-hostname
-test
-User Name
-person
-person
-person
-person
-other
-A. N. Other
-User Name
-test
-user
-person
-person
-person
-person
-other
-other
-user
-in the future
-Wed Jan 01 10:01:00 2020 +0000
-Mon Jan 12 13:46:40 1970 +0000
-Sun Jan 18 08:40:01 1970 +0000
-Sun Jan 18 08:40:00 1970 +0000
-Sat Jan 17 04:53:20 1970 +0000
-Fri Jan 16 01:06:40 1970 +0000
-Wed Jan 14 21:20:00 1970 +0000
-Tue Jan 13 17:33:20 1970 +0000
-Mon Jan 12 13:46:40 1970 +0000
-2020-01-01 10:01 +0000
-1970-01-12 13:46 +0000
-1970-01-18 08:40 +0000
-1970-01-18 08:40 +0000
-1970-01-17 04:53 +0000
-1970-01-16 01:06 +0000
-1970-01-14 21:20 +0000
-1970-01-13 17:33 +0000
-1970-01-12 13:46 +0000
-2020-01-01 10:01:00 +0000
-1970-01-12 13:46:40 +0000
-1970-01-18 08:40:01 +0000
-1970-01-18 08:40:00 +0000
-1970-01-17 04:53:20 +0000
-1970-01-16 01:06:40 +0000
-1970-01-14 21:20:00 +0000
-1970-01-13 17:33:20 +0000
-1970-01-12 13:46:40 +0000
-Wed, 01 Jan 2020 10:01:00 +0000
-Mon, 12 Jan 1970 13:46:40 +0000
-Sun, 18 Jan 1970 08:40:01 +0000
-Sun, 18 Jan 1970 08:40:00 +0000
-Sat, 17 Jan 1970 04:53:20 +0000
-Fri, 16 Jan 1970 01:06:40 +0000
-Wed, 14 Jan 1970 21:20:00 +0000
-Tue, 13 Jan 1970 17:33:20 +0000
-Mon, 12 Jan 1970 13:46:40 +0000
-third
-second
-merge
-new head
-new branch
-no user, no domain
-no person
-other 1
-line 1
-95c24699272e
-29114dbae42b
-c7b487c6c50e
-13207e5a10d9
-32a18f097fcc
-10e46f2dcbf4
-97054abb4ab8
-b608e9d1a3f0
-1e4e1b8f71e0
-<changeset author="test"/>
-<changeset author="User Name &lt;user@hostname&gt;"/>
-<changeset author="person"/>
-<changeset author="person"/>
-<changeset author="person"/>
-<changeset author="person"/>
-<changeset author="other@place"/>
-<changeset author="A. N. Other &lt;other@place&gt;"/>
-<changeset author="User Name &lt;user@hostname&gt;"/>
-8: 
-7: 8:95c24699272e
-6: 
-5: 6:c7b487c6c50e
-4: 6:c7b487c6c50e
-3: 4:32a18f097fcc 5:13207e5a10d9
-2: 3:10e46f2dcbf4
-1: 2:97054abb4ab8
-0: 1:b608e9d1a3f0
-# formatnode filter works
-#  quiet
-1e4e1b8f71e0
-#  normal
-1e4e1b8f71e0
-#  verbose
-1e4e1b8f71e0
-#  debug
-1e4e1b8f71e05681d422154f5421e385fec3454f
-# error on syntax
-abort: t:3: unmatched quotes
-# latesttag
-adding file
-adding head1
-adding head2
-created new head
-# No tag set
-5: null+5
-4: null+4
-3: null+3
-2: null+3
-1: null+2
-0: null+1
-# one common tag: longuest path wins
-6: t1+4
-5: t1+3
-4: t1+2
-3: t1+1
-2: t1+1
-1: t1+0
-0: null+1
-# one ancestor tag: more recent wins
-7: t2+3
-6: t2+2
-5: t2+1
-4: t1+2
-3: t1+1
-2: t2+0
-1: t1+0
-0: null+1
-# two branch tags: more recent wins
-8: t3+5
-7: t3+4
-6: t3+3
-5: t3+2
-4: t3+1
-3: t3+0
-2: t2+0
-1: t1+0
-0: null+1
-# merged tag overrides
-10: t5+5
-9: t5+4
-8: t5+3
-7: t5+2
-6: t5+1
-5: t5+0
-4: at3:t3+1
-3: at3:t3+0
-2: t2+0
-1: t1+0
-0: null+1
-# style path expansion (issue1948)
-test 10:dee8f28249af
-# test recursive showlist template (issue1989)
-M|test
-10,test
-branch: test
-# done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-command-template.t	Tue Sep 14 19:31:00 2010 +0200
@@ -0,0 +1,1327 @@
+  $ hg init a
+  $ cd a
+  $ echo a > a
+  $ hg add a
+  $ echo line 1 > b
+  $ echo line 2 >> b
+  $ hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
+
+  $ hg add b
+  $ echo other 1 > c
+  $ echo other 2 >> c
+  $ echo >> c
+  $ echo other 3 >> c
+  $ hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
+
+  $ hg add c
+  $ hg commit -m 'no person' -d '1200000 0' -u 'other@place'
+  $ echo c >> c
+  $ hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
+
+  $ echo foo > .hg/branch
+  $ hg commit -m 'new branch' -d '1400000 0' -u 'person'
+
+  $ hg co -q 3
+  $ echo other 4 >> d
+  $ hg add d
+  $ hg commit -m 'new head' -d '1500000 0' -u 'person'
+
+  $ hg merge -q foo
+  $ hg commit -m 'merge' -d '1500001 0' -u 'person'
+
+Second branch starting at nullrev:
+
+  $ hg update null
+  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ echo second > second
+  $ hg add second
+  $ hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
+  created new head
+
+  $ echo third > third
+  $ hg add third
+  $ hg mv second fourth
+  $ hg commit -m third -d "2020-01-01 10:01"
+
+Make sure user/global hgrc does not affect tests
+
+  $ echo '[ui]' > .hg/hgrc
+  $ echo 'logtemplate =' >> .hg/hgrc
+  $ echo 'style =' >> .hg/hgrc
+
+Default style is like normal output:
+
+  $ hg log > log.out
+  $ hg log --style default > style.out
+  $ cmp log.out style.out || diff -u log.out style.out
+
+  $ hg log -v > log.out
+  $ hg log -v --style default > style.out
+  $ cmp log.out style.out || diff -u log.out style.out
+
+  $ hg log --debug > log.out
+  $ hg log --debug --style default > style.out
+  $ cmp log.out style.out || diff -u log.out style.out
+
+Revision with no copies (used to print a traceback):
+
+  $ hg tip -v --template '\n'
+  
+
+Compact style works:
+
+  $ hg log --style compact
+  8[tip]   95c24699272e   2020-01-01 10:01 +0000   test
+    third
+  
+  7:-1   29114dbae42b   1970-01-12 13:46 +0000   user
+    second
+  
+  6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
+    merge
+  
+  5:3   13207e5a10d9   1970-01-18 08:40 +0000   person
+    new head
+  
+  4   32a18f097fcc   1970-01-17 04:53 +0000   person
+    new branch
+  
+  3   10e46f2dcbf4   1970-01-16 01:06 +0000   person
+    no user, no domain
+  
+  2   97054abb4ab8   1970-01-14 21:20 +0000   other
+    no person
+  
+  1   b608e9d1a3f0   1970-01-13 17:33 +0000   other
+    other 1
+  
+  0   1e4e1b8f71e0   1970-01-12 13:46 +0000   user
+    line 1
+  
+
+  $ hg log -v --style compact
+  8[tip]   95c24699272e   2020-01-01 10:01 +0000   test
+    third
+  
+  7:-1   29114dbae42b   1970-01-12 13:46 +0000   User Name <user@hostname>
+    second
+  
+  6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
+    merge
+  
+  5:3   13207e5a10d9   1970-01-18 08:40 +0000   person
+    new head
+  
+  4   32a18f097fcc   1970-01-17 04:53 +0000   person
+    new branch
+  
+  3   10e46f2dcbf4   1970-01-16 01:06 +0000   person
+    no user, no domain
+  
+  2   97054abb4ab8   1970-01-14 21:20 +0000   other@place
+    no person
+  
+  1   b608e9d1a3f0   1970-01-13 17:33 +0000   A. N. Other <other@place>
+    other 1
+  other 2
+  
+  other 3
+  
+  0   1e4e1b8f71e0   1970-01-12 13:46 +0000   User Name <user@hostname>
+    line 1
+  line 2
+  
+
+  $ hg log --debug --style compact
+  8[tip]:7,-1   95c24699272e   2020-01-01 10:01 +0000   test
+    third
+  
+  7:-1,-1   29114dbae42b   1970-01-12 13:46 +0000   User Name <user@hostname>
+    second
+  
+  6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
+    merge
+  
+  5:3,-1   13207e5a10d9   1970-01-18 08:40 +0000   person
+    new head
+  
+  4:3,-1   32a18f097fcc   1970-01-17 04:53 +0000   person
+    new branch
+  
+  3:2,-1   10e46f2dcbf4   1970-01-16 01:06 +0000   person
+    no user, no domain
+  
+  2:1,-1   97054abb4ab8   1970-01-14 21:20 +0000   other@place
+    no person
+  
+  1:0,-1   b608e9d1a3f0   1970-01-13 17:33 +0000   A. N. Other <other@place>
+    other 1
+  other 2
+  
+  other 3
+  
+  0:-1,-1   1e4e1b8f71e0   1970-01-12 13:46 +0000   User Name <user@hostname>
+    line 1
+  line 2
+  
+
+Test xml styles:
+
+  $ hg log --style xml
+  <?xml version="1.0"?>
+  <log>
+  <logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
+  <tag>tip</tag>
+  <author email="test">test</author>
+  <date>2020-01-01T10:01:00+00:00</date>
+  <msg xml:space="preserve">third</msg>
+  </logentry>
+  <logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="user@hostname">User Name</author>
+  <date>1970-01-12T13:46:40+00:00</date>
+  <msg xml:space="preserve">second</msg>
+  </logentry>
+  <logentry revision="6" node="c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f">
+  <parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
+  <parent revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4" />
+  <author email="person">person</author>
+  <date>1970-01-18T08:40:01+00:00</date>
+  <msg xml:space="preserve">merge</msg>
+  </logentry>
+  <logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
+  <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
+  <author email="person">person</author>
+  <date>1970-01-18T08:40:00+00:00</date>
+  <msg xml:space="preserve">new head</msg>
+  </logentry>
+  <logentry revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4">
+  <branch>foo</branch>
+  <author email="person">person</author>
+  <date>1970-01-17T04:53:20+00:00</date>
+  <msg xml:space="preserve">new branch</msg>
+  </logentry>
+  <logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
+  <author email="person">person</author>
+  <date>1970-01-16T01:06:40+00:00</date>
+  <msg xml:space="preserve">no user, no domain</msg>
+  </logentry>
+  <logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
+  <author email="other@place">other</author>
+  <date>1970-01-14T21:20:00+00:00</date>
+  <msg xml:space="preserve">no person</msg>
+  </logentry>
+  <logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
+  <author email="other@place">A. N. Other</author>
+  <date>1970-01-13T17:33:20+00:00</date>
+  <msg xml:space="preserve">other 1
+  other 2
+  
+  other 3</msg>
+  </logentry>
+  <logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
+  <author email="user@hostname">User Name</author>
+  <date>1970-01-12T13:46:40+00:00</date>
+  <msg xml:space="preserve">line 1
+  line 2</msg>
+  </logentry>
+  </log>
+
+  $ hg log -v --style xml
+  <?xml version="1.0"?>
+  <log>
+  <logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
+  <tag>tip</tag>
+  <author email="test">test</author>
+  <date>2020-01-01T10:01:00+00:00</date>
+  <msg xml:space="preserve">third</msg>
+  <paths>
+  <path action="A">fourth</path>
+  <path action="A">third</path>
+  <path action="R">second</path>
+  </paths>
+  <copies>
+  <copy source="second">fourth</copy>
+  </copies>
+  </logentry>
+  <logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="user@hostname">User Name</author>
+  <date>1970-01-12T13:46:40+00:00</date>
+  <msg xml:space="preserve">second</msg>
+  <paths>
+  <path action="A">second</path>
+  </paths>
+  </logentry>
+  <logentry revision="6" node="c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f">
+  <parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
+  <parent revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4" />
+  <author email="person">person</author>
+  <date>1970-01-18T08:40:01+00:00</date>
+  <msg xml:space="preserve">merge</msg>
+  <paths>
+  </paths>
+  </logentry>
+  <logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
+  <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
+  <author email="person">person</author>
+  <date>1970-01-18T08:40:00+00:00</date>
+  <msg xml:space="preserve">new head</msg>
+  <paths>
+  <path action="A">d</path>
+  </paths>
+  </logentry>
+  <logentry revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4">
+  <branch>foo</branch>
+  <author email="person">person</author>
+  <date>1970-01-17T04:53:20+00:00</date>
+  <msg xml:space="preserve">new branch</msg>
+  <paths>
+  </paths>
+  </logentry>
+  <logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
+  <author email="person">person</author>
+  <date>1970-01-16T01:06:40+00:00</date>
+  <msg xml:space="preserve">no user, no domain</msg>
+  <paths>
+  <path action="M">c</path>
+  </paths>
+  </logentry>
+  <logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
+  <author email="other@place">other</author>
+  <date>1970-01-14T21:20:00+00:00</date>
+  <msg xml:space="preserve">no person</msg>
+  <paths>
+  <path action="A">c</path>
+  </paths>
+  </logentry>
+  <logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
+  <author email="other@place">A. N. Other</author>
+  <date>1970-01-13T17:33:20+00:00</date>
+  <msg xml:space="preserve">other 1
+  other 2
+  
+  other 3</msg>
+  <paths>
+  <path action="A">b</path>
+  </paths>
+  </logentry>
+  <logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
+  <author email="user@hostname">User Name</author>
+  <date>1970-01-12T13:46:40+00:00</date>
+  <msg xml:space="preserve">line 1
+  line 2</msg>
+  <paths>
+  <path action="A">a</path>
+  </paths>
+  </logentry>
+  </log>
+
+  $ hg log --debug --style xml
+  <?xml version="1.0"?>
+  <log>
+  <logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
+  <tag>tip</tag>
+  <parent revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="test">test</author>
+  <date>2020-01-01T10:01:00+00:00</date>
+  <msg xml:space="preserve">third</msg>
+  <paths>
+  <path action="A">fourth</path>
+  <path action="A">third</path>
+  <path action="R">second</path>
+  </paths>
+  <copies>
+  <copy source="second">fourth</copy>
+  </copies>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="user@hostname">User Name</author>
+  <date>1970-01-12T13:46:40+00:00</date>
+  <msg xml:space="preserve">second</msg>
+  <paths>
+  <path action="A">second</path>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="6" node="c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f">
+  <parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
+  <parent revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4" />
+  <author email="person">person</author>
+  <date>1970-01-18T08:40:01+00:00</date>
+  <msg xml:space="preserve">merge</msg>
+  <paths>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
+  <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="person">person</author>
+  <date>1970-01-18T08:40:00+00:00</date>
+  <msg xml:space="preserve">new head</msg>
+  <paths>
+  <path action="A">d</path>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="4" node="32a18f097fcccf76ef282f62f8a85b3adf8d13c4">
+  <branch>foo</branch>
+  <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="person">person</author>
+  <date>1970-01-17T04:53:20+00:00</date>
+  <msg xml:space="preserve">new branch</msg>
+  <paths>
+  </paths>
+  <extra key="branch">foo</extra>
+  </logentry>
+  <logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
+  <parent revision="2" node="97054abb4ab824450e9164180baf491ae0078465" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="person">person</author>
+  <date>1970-01-16T01:06:40+00:00</date>
+  <msg xml:space="preserve">no user, no domain</msg>
+  <paths>
+  <path action="M">c</path>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
+  <parent revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="other@place">other</author>
+  <date>1970-01-14T21:20:00+00:00</date>
+  <msg xml:space="preserve">no person</msg>
+  <paths>
+  <path action="A">c</path>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
+  <parent revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="other@place">A. N. Other</author>
+  <date>1970-01-13T17:33:20+00:00</date>
+  <msg xml:space="preserve">other 1
+  other 2
+  
+  other 3</msg>
+  <paths>
+  <path action="A">b</path>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  <logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <parent revision="-1" node="0000000000000000000000000000000000000000" />
+  <author email="user@hostname">User Name</author>
+  <date>1970-01-12T13:46:40+00:00</date>
+  <msg xml:space="preserve">line 1
+  line 2</msg>
+  <paths>
+  <path action="A">a</path>
+  </paths>
+  <extra key="branch">default</extra>
+  </logentry>
+  </log>
+
+
+Error if style not readable:
+
+  $ touch q
+  $ chmod 0 q
+  $ hg log --style ./q
+  abort: Permission denied: ./q
+
+Error if no style:
+
+  $ hg log --style notexist
+  abort: style not found: notexist
+
+Error if style missing key:
+
+  $ echo 'q = q' > t
+  $ hg log --style ./t
+  abort: ./t: no key named 'changeset'
+
+Error if include fails:
+
+  $ echo 'changeset = q' >> t
+  $ hg log --style ./t
+  abort: template file ./q: Permission denied
+
+Include works:
+
+  $ rm q
+  $ echo '{rev}' > q
+  $ hg log --style ./t
+  8
+  7
+  6
+  5
+  4
+  3
+  2
+  1
+  0
+
+ui.style works:
+
+  $ echo '[ui]' > .hg/hgrc
+  $ echo 'style = t' >> .hg/hgrc
+  $ hg log
+  8
+  7
+  6
+  5
+  4
+  3
+  2
+  1
+  0
+
+
+Issue338:
+
+  $ hg log --style=changelog > changelog
+
+  $ cat changelog
+  2020-01-01  test  <test>
+  
+  	* fourth, second, third:
+  	third
+  	[95c24699272e] [tip]
+  
+  1970-01-12  User Name  <user@hostname>
+  
+  	* second:
+  	second
+  	[29114dbae42b]
+  
+  1970-01-18  person  <person>
+  
+  	* merge
+  	[c7b487c6c50e]
+  
+  	* d:
+  	new head
+  	[13207e5a10d9]
+  
+  1970-01-17  person  <person>
+  
+  	* new branch
+  	[32a18f097fcc] <foo>
+  
+  1970-01-16  person  <person>
+  
+  	* c:
+  	no user, no domain
+  	[10e46f2dcbf4]
+  
+  1970-01-14  other  <other@place>
+  
+  	* c:
+  	no person
+  	[97054abb4ab8]
+  
+  1970-01-13  A. N. Other  <other@place>
+  
+  	* b:
+  	other 1 other 2
+  
+  	other 3
+  	[b608e9d1a3f0]
+  
+  1970-01-12  User Name  <user@hostname>
+  
+  	* a:
+  	line 1 line 2
+  	[1e4e1b8f71e0]
+  
+
+Issue 2130:
+
+  $ hg heads --style changelog
+  2020-01-01  test  <test>
+  
+  	* fourth, second, third:
+  	third
+  	[95c24699272e] [tip]
+  
+  1970-01-18  person  <person>
+  
+  	* merge
+  	[c7b487c6c50e]
+  
+  1970-01-17  person  <person>
+  
+  	* new branch
+  	[32a18f097fcc] <foo>
+  
+
+Keys work:
+
+  $ for key in author branches date desc file_adds file_dels file_mods \
+  >         file_copies file_copies_switch files \
+  >         manifest node parents rev tags diffstat extras; do
+  >     for mode in '' --verbose --debug; do
+  >         hg log $mode --template "$key$mode: {$key}\n"
+  >     done
+  > done
+  author: test
+  author: User Name <user@hostname>
+  author: person
+  author: person
+  author: person
+  author: person
+  author: other@place
+  author: A. N. Other <other@place>
+  author: User Name <user@hostname>
+  author--verbose: test
+  author--verbose: User Name <user@hostname>
+  author--verbose: person
+  author--verbose: person
+  author--verbose: person
+  author--verbose: person
+  author--verbose: other@place
+  author--verbose: A. N. Other <other@place>
+  author--verbose: User Name <user@hostname>
+  author--debug: test
+  author--debug: User Name <user@hostname>
+  author--debug: person
+  author--debug: person
+  author--debug: person
+  author--debug: person
+  author--debug: other@place
+  author--debug: A. N. Other <other@place>
+  author--debug: User Name <user@hostname>
+  branches: 
+  branches: 
+  branches: 
+  branches: 
+  branches: foo
+  branches: 
+  branches: 
+  branches: 
+  branches: 
+  branches--verbose: 
+  branches--verbose: 
+  branches--verbose: 
+  branches--verbose: 
+  branches--verbose: foo
+  branches--verbose: 
+  branches--verbose: 
+  branches--verbose: 
+  branches--verbose: 
+  branches--debug: 
+  branches--debug: 
+  branches--debug: 
+  branches--debug: 
+  branches--debug: foo
+  branches--debug: 
+  branches--debug: 
+  branches--debug: 
+  branches--debug: 
+  date: 1577872860.00
+  date: 1000000.00
+  date: 1500001.00
+  date: 1500000.00
+  date: 1400000.00
+  date: 1300000.00
+  date: 1200000.00
+  date: 1100000.00
+  date: 1000000.00
+  date--verbose: 1577872860.00
+  date--verbose: 1000000.00
+  date--verbose: 1500001.00
+  date--verbose: 1500000.00
+  date--verbose: 1400000.00
+  date--verbose: 1300000.00
+  date--verbose: 1200000.00
+  date--verbose: 1100000.00
+  date--verbose: 1000000.00
+  date--debug: 1577872860.00
+  date--debug: 1000000.00
+  date--debug: 1500001.00
+  date--debug: 1500000.00
+  date--debug: 1400000.00
+  date--debug: 1300000.00
+  date--debug: 1200000.00
+  date--debug: 1100000.00
+  date--debug: 1000000.00
+  desc: third
+  desc: second
+  desc: merge
+  desc: new head
+  desc: new branch
+  desc: no user, no domain
+  desc: no person
+  desc: other 1
+  other 2
+  
+  other 3
+  desc: line 1
+  line 2
+  desc--verbose: third
+  desc--verbose: second
+  desc--verbose: merge
+  desc--verbose: new head
+  desc--verbose: new branch
+  desc--verbose: no user, no domain
+  desc--verbose: no person
+  desc--verbose: other 1
+  other 2
+  
+  other 3
+  desc--verbose: line 1
+  line 2
+  desc--debug: third
+  desc--debug: second
+  desc--debug: merge
+  desc--debug: new head
+  desc--debug: new branch
+  desc--debug: no user, no domain
+  desc--debug: no person
+  desc--debug: other 1
+  other 2
+  
+  other 3
+  desc--debug: line 1
+  line 2
+  file_adds: fourth third
+  file_adds: second
+  file_adds: 
+  file_adds: d
+  file_adds: 
+  file_adds: 
+  file_adds: c
+  file_adds: b
+  file_adds: a
+  file_adds--verbose: fourth third
+  file_adds--verbose: second
+  file_adds--verbose: 
+  file_adds--verbose: d
+  file_adds--verbose: 
+  file_adds--verbose: 
+  file_adds--verbose: c
+  file_adds--verbose: b
+  file_adds--verbose: a
+  file_adds--debug: fourth third
+  file_adds--debug: second
+  file_adds--debug: 
+  file_adds--debug: d
+  file_adds--debug: 
+  file_adds--debug: 
+  file_adds--debug: c
+  file_adds--debug: b
+  file_adds--debug: a
+  file_dels: second
+  file_dels: 
+  file_dels: 
+  file_dels: 
+  file_dels: 
+  file_dels: 
+  file_dels: 
+  file_dels: 
+  file_dels: 
+  file_dels--verbose: second
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--verbose: 
+  file_dels--debug: second
+  file_dels--debug: 
+  file_dels--debug: 
+  file_dels--debug: 
+  file_dels--debug: 
+  file_dels--debug: 
+  file_dels--debug: 
+  file_dels--debug: 
+  file_dels--debug: 
+  file_mods: 
+  file_mods: 
+  file_mods: 
+  file_mods: 
+  file_mods: 
+  file_mods: c
+  file_mods: 
+  file_mods: 
+  file_mods: 
+  file_mods--verbose: 
+  file_mods--verbose: 
+  file_mods--verbose: 
+  file_mods--verbose: 
+  file_mods--verbose: 
+  file_mods--verbose: c
+  file_mods--verbose: 
+  file_mods--verbose: 
+  file_mods--verbose: 
+  file_mods--debug: 
+  file_mods--debug: 
+  file_mods--debug: 
+  file_mods--debug: 
+  file_mods--debug: 
+  file_mods--debug: c
+  file_mods--debug: 
+  file_mods--debug: 
+  file_mods--debug: 
+  file_copies: fourth (second)
+  file_copies: 
+  file_copies: 
+  file_copies: 
+  file_copies: 
+  file_copies: 
+  file_copies: 
+  file_copies: 
+  file_copies: 
+  file_copies--verbose: fourth (second)
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--verbose: 
+  file_copies--debug: fourth (second)
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies--debug: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--verbose: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  file_copies_switch--debug: 
+  files: fourth second third
+  files: second
+  files: 
+  files: d
+  files: 
+  files: c
+  files: c
+  files: b
+  files: a
+  files--verbose: fourth second third
+  files--verbose: second
+  files--verbose: 
+  files--verbose: d
+  files--verbose: 
+  files--verbose: c
+  files--verbose: c
+  files--verbose: b
+  files--verbose: a
+  files--debug: fourth second third
+  files--debug: second
+  files--debug: 
+  files--debug: d
+  files--debug: 
+  files--debug: c
+  files--debug: c
+  files--debug: b
+  files--debug: a
+  manifest: 8:94961b75a2da
+  manifest: 7:f2dbc354b94e
+  manifest: 6:91015e9dbdd7
+  manifest: 5:4dc3def4f9b4
+  manifest: 4:90ae8dda64e1
+  manifest: 3:cb5a1327723b
+  manifest: 2:6e0e82995c35
+  manifest: 1:4e8d705b1e53
+  manifest: 0:a0c8bcbbb45c
+  manifest--verbose: 8:94961b75a2da
+  manifest--verbose: 7:f2dbc354b94e
+  manifest--verbose: 6:91015e9dbdd7
+  manifest--verbose: 5:4dc3def4f9b4
+  manifest--verbose: 4:90ae8dda64e1
+  manifest--verbose: 3:cb5a1327723b
+  manifest--verbose: 2:6e0e82995c35
+  manifest--verbose: 1:4e8d705b1e53
+  manifest--verbose: 0:a0c8bcbbb45c
+  manifest--debug: 8:94961b75a2da554b4df6fb599e5bfc7d48de0c64
+  manifest--debug: 7:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
+  manifest--debug: 6:91015e9dbdd76a6791085d12b0a0ec7fcd22ffbf
+  manifest--debug: 5:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
+  manifest--debug: 4:90ae8dda64e1a876c792bccb9af66284f6018363
+  manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
+  manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
+  manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
+  manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
+  node: 95c24699272ef57d062b8bccc32c878bf841784a
+  node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
+  node: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
+  node: 13207e5a10d9fd28ec424934298e176197f2c67f
+  node: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
+  node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
+  node: 97054abb4ab824450e9164180baf491ae0078465
+  node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
+  node: 1e4e1b8f71e05681d422154f5421e385fec3454f
+  node--verbose: 95c24699272ef57d062b8bccc32c878bf841784a
+  node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
+  node--verbose: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
+  node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
+  node--verbose: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
+  node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
+  node--verbose: 97054abb4ab824450e9164180baf491ae0078465
+  node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
+  node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
+  node--debug: 95c24699272ef57d062b8bccc32c878bf841784a
+  node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
+  node--debug: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
+  node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
+  node--debug: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
+  node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
+  node--debug: 97054abb4ab824450e9164180baf491ae0078465
+  node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
+  node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
+  parents: 
+  parents: -1:000000000000 
+  parents: 5:13207e5a10d9 4:32a18f097fcc 
+  parents: 3:10e46f2dcbf4 
+  parents: 
+  parents: 
+  parents: 
+  parents: 
+  parents: 
+  parents--verbose: 
+  parents--verbose: -1:000000000000 
+  parents--verbose: 5:13207e5a10d9 4:32a18f097fcc 
+  parents--verbose: 3:10e46f2dcbf4 
+  parents--verbose: 
+  parents--verbose: 
+  parents--verbose: 
+  parents--verbose: 
+  parents--verbose: 
+  parents--debug: 7:29114dbae42b9f078cf2714dbe3a86bba8ec7453 -1:0000000000000000000000000000000000000000 
+  parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
+  parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:32a18f097fcccf76ef282f62f8a85b3adf8d13c4 
+  parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
+  parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
+  parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000 
+  parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000 
+  parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000 
+  parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
+  rev: 8
+  rev: 7
+  rev: 6
+  rev: 5
+  rev: 4
+  rev: 3
+  rev: 2
+  rev: 1
+  rev: 0
+  rev--verbose: 8
+  rev--verbose: 7
+  rev--verbose: 6
+  rev--verbose: 5
+  rev--verbose: 4
+  rev--verbose: 3
+  rev--verbose: 2
+  rev--verbose: 1
+  rev--verbose: 0
+  rev--debug: 8
+  rev--debug: 7
+  rev--debug: 6
+  rev--debug: 5
+  rev--debug: 4
+  rev--debug: 3
+  rev--debug: 2
+  rev--debug: 1
+  rev--debug: 0
+  tags: tip
+  tags: 
+  tags: 
+  tags: 
+  tags: 
+  tags: 
+  tags: 
+  tags: 
+  tags: 
+  tags--verbose: tip
+  tags--verbose: 
+  tags--verbose: 
+  tags--verbose: 
+  tags--verbose: 
+  tags--verbose: 
+  tags--verbose: 
+  tags--verbose: 
+  tags--verbose: 
+  tags--debug: tip
+  tags--debug: 
+  tags--debug: 
+  tags--debug: 
+  tags--debug: 
+  tags--debug: 
+  tags--debug: 
+  tags--debug: 
+  tags--debug: 
+  diffstat: 3: +2/-1
+  diffstat: 1: +1/-0
+  diffstat: 0: +0/-0
+  diffstat: 1: +1/-0
+  diffstat: 0: +0/-0
+  diffstat: 1: +1/-0
+  diffstat: 1: +4/-0
+  diffstat: 1: +2/-0
+  diffstat: 1: +1/-0
+  diffstat--verbose: 3: +2/-1
+  diffstat--verbose: 1: +1/-0
+  diffstat--verbose: 0: +0/-0
+  diffstat--verbose: 1: +1/-0
+  diffstat--verbose: 0: +0/-0
+  diffstat--verbose: 1: +1/-0
+  diffstat--verbose: 1: +4/-0
+  diffstat--verbose: 1: +2/-0
+  diffstat--verbose: 1: +1/-0
+  diffstat--debug: 3: +2/-1
+  diffstat--debug: 1: +1/-0
+  diffstat--debug: 0: +0/-0
+  diffstat--debug: 1: +1/-0
+  diffstat--debug: 0: +0/-0
+  diffstat--debug: 1: +1/-0
+  diffstat--debug: 1: +4/-0
+  diffstat--debug: 1: +2/-0
+  diffstat--debug: 1: +1/-0
+  extras: branch=default
+  extras: branch=default
+  extras: branch=default
+  extras: branch=default
+  extras: branch=foo
+  extras: branch=default
+  extras: branch=default
+  extras: branch=default
+  extras: branch=default
+  extras--verbose: branch=default
+  extras--verbose: branch=default
+  extras--verbose: branch=default
+  extras--verbose: branch=default
+  extras--verbose: branch=foo
+  extras--verbose: branch=default
+  extras--verbose: branch=default
+  extras--verbose: branch=default
+  extras--verbose: branch=default
+  extras--debug: branch=default
+  extras--debug: branch=default
+  extras--debug: branch=default
+  extras--debug: branch=default
+  extras--debug: branch=foo
+  extras--debug: branch=default
+  extras--debug: branch=default
+  extras--debug: branch=default
+  extras--debug: branch=default
+
+
+Filters work:
+
+  $ hg log --template '{author|domain}\n'
+  
+  hostname
+  
+  
+  
+  
+  place
+  place
+  hostname
+
+  $ hg log --template '{author|person}\n'
+  test
+  User Name
+  person
+  person
+  person
+  person
+  other
+  A. N. Other
+  User Name
+
+  $ hg log --template '{author|user}\n'
+  test
+  user
+  person
+  person
+  person
+  person
+  other
+  other
+  user
+
+  $ hg log --template '{date|age}\n' > /dev/null || exit 1
+
+  $ hg log -l1 --template '{date|age}\n' 
+  in the future
+  $ hg log --template '{date|date}\n'
+  Wed Jan 01 10:01:00 2020 +0000
+  Mon Jan 12 13:46:40 1970 +0000
+  Sun Jan 18 08:40:01 1970 +0000
+  Sun Jan 18 08:40:00 1970 +0000
+  Sat Jan 17 04:53:20 1970 +0000
+  Fri Jan 16 01:06:40 1970 +0000
+  Wed Jan 14 21:20:00 1970 +0000
+  Tue Jan 13 17:33:20 1970 +0000
+  Mon Jan 12 13:46:40 1970 +0000
+
+  $ hg log --template '{date|isodate}\n'
+  2020-01-01 10:01 +0000
+  1970-01-12 13:46 +0000
+  1970-01-18 08:40 +0000
+  1970-01-18 08:40 +0000
+  1970-01-17 04:53 +0000
+  1970-01-16 01:06 +0000
+  1970-01-14 21:20 +0000
+  1970-01-13 17:33 +0000
+  1970-01-12 13:46 +0000
+
+  $ hg log --template '{date|isodatesec}\n'
+  2020-01-01 10:01:00 +0000
+  1970-01-12 13:46:40 +0000
+  1970-01-18 08:40:01 +0000
+  1970-01-18 08:40:00 +0000
+  1970-01-17 04:53:20 +0000
+  1970-01-16 01:06:40 +0000
+  1970-01-14 21:20:00 +0000
+  1970-01-13 17:33:20 +0000
+  1970-01-12 13:46:40 +0000
+
+  $ hg log --template '{date|rfc822date}\n'
+  Wed, 01 Jan 2020 10:01:00 +0000
+  Mon, 12 Jan 1970 13:46:40 +0000
+  Sun, 18 Jan 1970 08:40:01 +0000
+  Sun, 18 Jan 1970 08:40:00 +0000
+  Sat, 17 Jan 1970 04:53:20 +0000
+  Fri, 16 Jan 1970 01:06:40 +0000
+  Wed, 14 Jan 1970 21:20:00 +0000
+  Tue, 13 Jan 1970 17:33:20 +0000
+  Mon, 12 Jan 1970 13:46:40 +0000
+
+  $ hg log --template '{desc|firstline}\n'
+  third
+  second
+  merge
+  new head
+  new branch
+  no user, no domain
+  no person
+  other 1
+  line 1
+
+  $ hg log --template '{node|short}\n'
+  95c24699272e
+  29114dbae42b
+  c7b487c6c50e
+  13207e5a10d9
+  32a18f097fcc
+  10e46f2dcbf4
+  97054abb4ab8
+  b608e9d1a3f0
+  1e4e1b8f71e0
+
+  $ hg log --template '<changeset author="{author|xmlescape}"/>\n'
+  <changeset author="test"/>
+  <changeset author="User Name &lt;user@hostname&gt;"/>
+  <changeset author="person"/>
+  <changeset author="person"/>
+  <changeset author="person"/>
+  <changeset author="person"/>
+  <changeset author="other@place"/>
+  <changeset author="A. N. Other &lt;other@place&gt;"/>
+  <changeset author="User Name &lt;user@hostname&gt;"/>
+
+  $ hg log --template '{rev}: {children}\n'
+  8: 
+  7: 8:95c24699272e
+  6: 
+  5: 6:c7b487c6c50e
+  4: 6:c7b487c6c50e
+  3: 4:32a18f097fcc 5:13207e5a10d9
+  2: 3:10e46f2dcbf4
+  1: 2:97054abb4ab8
+  0: 1:b608e9d1a3f0
+
+Formatnode filter works:
+
+  $ hg -q log -r 0 --template '{node|formatnode}\n'
+  1e4e1b8f71e0
+
+  $ hg log -r 0 --template '{node|formatnode}\n'
+  1e4e1b8f71e0
+
+  $ hg -v log -r 0 --template '{node|formatnode}\n'
+  1e4e1b8f71e0
+
+  $ hg --debug log -r 0 --template '{node|formatnode}\n'
+  1e4e1b8f71e05681d422154f5421e385fec3454f
+
+Error on syntax:
+
+  $ echo 'x = "f' >> t
+  $ hg log
+  abort: t:3: unmatched quotes
+
+  $ cd ..
+
+
+latesttag:
+
+  $ hg init latesttag
+  $ cd latesttag
+
+  $ echo a > file
+  $ hg ci -Am a -d '0 0'
+  adding file
+
+  $ echo b >> file
+  $ hg ci -m b -d '1 0'
+
+  $ echo c >> head1
+  $ hg ci -Am h1c -d '2 0'
+  adding head1
+
+  $ hg update -q 1
+  $ echo d >> head2
+  $ hg ci -Am h2d -d '3 0'
+  adding head2
+  created new head
+
+  $ echo e >> head2
+  $ hg ci -m h2e -d '4 0'
+
+  $ hg merge -q
+  $ hg ci -m merge -d '5 0'
+
+No tag set:
+
+  $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
+  5: null+5
+  4: null+4
+  3: null+3
+  2: null+3
+  1: null+2
+  0: null+1
+
+One common tag: longuest path wins:
+
+  $ hg tag -r 1 -m t1 -d '6 0' t1
+  $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
+  6: t1+4
+  5: t1+3
+  4: t1+2
+  3: t1+1
+  2: t1+1
+  1: t1+0
+  0: null+1
+
+One ancestor tag: more recent wins:
+
+  $ hg tag -r 2 -m t2 -d '7 0' t2
+  $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
+  7: t2+3
+  6: t2+2
+  5: t2+1
+  4: t1+2
+  3: t1+1
+  2: t2+0
+  1: t1+0
+  0: null+1
+
+Two branch tags: more recent wins:
+
+  $ hg tag -r 3 -m t3 -d '8 0' t3
+  $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
+  8: t3+5
+  7: t3+4
+  6: t3+3
+  5: t3+2
+  4: t3+1
+  3: t3+0
+  2: t2+0
+  1: t1+0
+  0: null+1
+
+Merged tag overrides:
+
+  $ hg tag -r 5 -m t5 -d '9 0' t5
+  $ hg tag -r 3 -m at3 -d '10 0' at3
+  $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
+  10: t5+5
+  9: t5+4
+  8: t5+3
+  7: t5+2
+  6: t5+1
+  5: t5+0
+  4: at3:t3+1
+  3: at3:t3+0
+  2: t2+0
+  1: t1+0
+  0: null+1
+
+  $ cd ..
+
+
+Style path expansion (issue1948):
+
+  $ mkdir -p home/styles
+
+  $ cat > home/styles/teststyle <<EOF
+  > changeset = 'test {rev}:{node|short}\n'
+  > EOF
+
+  $ HOME=`pwd`/home; export HOME
+
+  $ cat > latesttag/.hg/hgrc <<EOF
+  > [ui]
+  > style = ~/styles/teststyle
+  > EOF
+
+  $ hg -R latesttag tip
+  test 10:dee8f28249af
+
+Test recursive showlist template (issue1989):
+
+  $ cat > style1989 <<EOF
+  > changeset = '{file_mods}{manifest}{extras}'
+  > file_mod  = 'M|{author|person}\n'
+  > manifest = '{rev},{author}\n'
+  > extra = '{key}: {author}\n'
+  > EOF
+
+  $ hg -R latesttag log -r tip --style=style1989
+  M|test
+  10,test
+  branch: test
+