Mercurial > hg
changeset 38436:da4508cdef37
tests: extract test-template-keywords.t from test-command-template.t
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 16 Jun 2018 14:14:52 +0900 |
parents | 6a8ed5c7e112 |
children | 550b7d110f45 |
files | contrib/python3-whitelist tests/test-command-template.t tests/test-template-keywords.t |
diffstat | 3 files changed, 1198 insertions(+), 1077 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/python3-whitelist Sat Jun 16 14:10:12 2018 +0900 +++ b/contrib/python3-whitelist Sat Jun 16 14:14:52 2018 +0900 @@ -490,6 +490,7 @@ test-tag.t test-tags.t test-template-functions.t +test-template-keywords.t test-template-map.t test-transplant.t test-treemanifest.t
--- a/tests/test-command-template.t Sat Jun 16 14:10:12 2018 +0900 +++ b/tests/test-command-template.t Sat Jun 16 14:14:52 2018 +0900 @@ -210,18 +210,6 @@ 8 t 7 f -Working-directory revision has special identifiers, though they are still -experimental: - - $ hg log -r 'wdir()' -T '{rev}:{node}\n' - 2147483647:ffffffffffffffffffffffffffffffffffffffff - -Some keywords are invalid for working-directory revision, but they should -never cause crash: - - $ hg log -r 'wdir()' -T '{manifest}\n' - - Internal resources shouldn't be exposed (issue5699): $ hg log -r. -T '{cache}{ctx}{repo}{revcache}{templ}{ui}' @@ -284,650 +272,10 @@ $ hg log --style ./issue4758 -r tip 8 tip -Check that {phase} works correctly on parents: +Set up phase: - $ cat << EOF > parentphase - > changeset_debug = '{rev} ({phase}):{parents}\n' - > parent = ' {rev} ({phase})' - > EOF $ hg phase -r 5 --public $ hg phase -r 7 --secret --force - $ hg log --debug -G --style ./parentphase - @ 8 (secret): 7 (secret) -1 (public) - | - o 7 (secret): -1 (public) -1 (public) - - o 6 (draft): 5 (public) 4 (draft) - |\ - | o 5 (public): 3 (public) -1 (public) - | | - o | 4 (draft): 3 (public) -1 (public) - |/ - o 3 (public): 2 (public) -1 (public) - | - o 2 (public): 1 (public) -1 (public) - | - o 1 (public): 0 (public) -1 (public) - | - o 0 (public): -1 (public) -1 (public) - - -Keys work: - - $ for key in author branch branches date desc file_adds file_dels file_mods \ - > file_copies file_copies_switch files \ - > manifest node parents rev tags diffstat extras \ - > p1rev p2rev p1node p2node; 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> - branch: default - branch: default - branch: default - branch: default - branch: foo - branch: default - branch: default - branch: default - branch: default - branch--verbose: default - branch--verbose: default - branch--verbose: default - branch--verbose: default - branch--verbose: foo - branch--verbose: default - branch--verbose: default - branch--verbose: default - branch--verbose: default - branch--debug: default - branch--debug: default - branch--debug: default - branch--debug: default - branch--debug: foo - branch--debug: default - branch--debug: default - branch--debug: default - branch--debug: default - 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: 6:94961b75a2da - manifest: 5:f2dbc354b94e - manifest: 4:4dc3def4f9b4 - manifest: 4:4dc3def4f9b4 - manifest: 3:cb5a1327723b - manifest: 3:cb5a1327723b - manifest: 2:6e0e82995c35 - manifest: 1:4e8d705b1e53 - manifest: 0:a0c8bcbbb45c - manifest--verbose: 6:94961b75a2da - manifest--verbose: 5:f2dbc354b94e - manifest--verbose: 4:4dc3def4f9b4 - manifest--verbose: 4:4dc3def4f9b4 - manifest--verbose: 3:cb5a1327723b - manifest--verbose: 3:cb5a1327723b - manifest--verbose: 2:6e0e82995c35 - manifest--verbose: 1:4e8d705b1e53 - manifest--verbose: 0:a0c8bcbbb45c - manifest--debug: 6:94961b75a2da554b4df6fb599e5bfc7d48de0c64 - manifest--debug: 5:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf - manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216 - manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216 - manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc - manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc - manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1 - manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55 - manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 - node: 95c24699272ef57d062b8bccc32c878bf841784a - node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 - node: d41e714fe50d9e4a5f11b4d595d543481b5f980b - node: 13207e5a10d9fd28ec424934298e176197f2c67f - node: bbe44766e73d5f11ed2177f1838de10c53ef3e74 - node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - node: 97054abb4ab824450e9164180baf491ae0078465 - node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 - node: 1e4e1b8f71e05681d422154f5421e385fec3454f - node--verbose: 95c24699272ef57d062b8bccc32c878bf841784a - node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 - node--verbose: d41e714fe50d9e4a5f11b4d595d543481b5f980b - node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f - node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74 - node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - node--verbose: 97054abb4ab824450e9164180baf491ae0078465 - node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 - node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f - node--debug: 95c24699272ef57d062b8bccc32c878bf841784a - node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 - node--debug: d41e714fe50d9e4a5f11b4d595d543481b5f980b - node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f - node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74 - node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - node--debug: 97054abb4ab824450e9164180baf491ae0078465 - node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 - node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f - parents: - parents: -1:000000000000 - parents: 5:13207e5a10d9 4:bbe44766e73d - parents: 3:10e46f2dcbf4 - parents: - parents: - parents: - parents: - parents: - parents--verbose: - parents--verbose: -1:000000000000 - parents--verbose: 5:13207e5a10d9 4:bbe44766e73d - 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:bbe44766e73d5f11ed2177f1838de10c53ef3e74 - 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 - p1rev: 7 - p1rev: -1 - p1rev: 5 - p1rev: 3 - p1rev: 3 - p1rev: 2 - p1rev: 1 - p1rev: 0 - p1rev: -1 - p1rev--verbose: 7 - p1rev--verbose: -1 - p1rev--verbose: 5 - p1rev--verbose: 3 - p1rev--verbose: 3 - p1rev--verbose: 2 - p1rev--verbose: 1 - p1rev--verbose: 0 - p1rev--verbose: -1 - p1rev--debug: 7 - p1rev--debug: -1 - p1rev--debug: 5 - p1rev--debug: 3 - p1rev--debug: 3 - p1rev--debug: 2 - p1rev--debug: 1 - p1rev--debug: 0 - p1rev--debug: -1 - p2rev: -1 - p2rev: -1 - p2rev: 4 - p2rev: -1 - p2rev: -1 - p2rev: -1 - p2rev: -1 - p2rev: -1 - p2rev: -1 - p2rev--verbose: -1 - p2rev--verbose: -1 - p2rev--verbose: 4 - p2rev--verbose: -1 - p2rev--verbose: -1 - p2rev--verbose: -1 - p2rev--verbose: -1 - p2rev--verbose: -1 - p2rev--verbose: -1 - p2rev--debug: -1 - p2rev--debug: -1 - p2rev--debug: 4 - p2rev--debug: -1 - p2rev--debug: -1 - p2rev--debug: -1 - p2rev--debug: -1 - p2rev--debug: -1 - p2rev--debug: -1 - p1node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 - p1node: 0000000000000000000000000000000000000000 - p1node: 13207e5a10d9fd28ec424934298e176197f2c67f - p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - p1node: 97054abb4ab824450e9164180baf491ae0078465 - p1node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 - p1node: 1e4e1b8f71e05681d422154f5421e385fec3454f - p1node: 0000000000000000000000000000000000000000 - p1node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 - p1node--verbose: 0000000000000000000000000000000000000000 - p1node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f - p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - p1node--verbose: 97054abb4ab824450e9164180baf491ae0078465 - p1node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 - p1node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f - p1node--verbose: 0000000000000000000000000000000000000000 - p1node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 - p1node--debug: 0000000000000000000000000000000000000000 - p1node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f - p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 - p1node--debug: 97054abb4ab824450e9164180baf491ae0078465 - p1node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 - p1node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f - p1node--debug: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node: bbe44766e73d5f11ed2177f1838de10c53ef3e74 - p2node: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--verbose: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 - p2node--debug: 0000000000000000000000000000000000000000 Add a dummy commit to make up for the instability of the above: @@ -1053,31 +401,9 @@ hg: parse error: unknown function 'foo' [255] -Test index keyword: - - $ hg log -l 2 -T '{index + 10}{files % " {index}:{file}"}\n' - 10 0:a 1:b 2:fifth 3:fourth 4:third - 11 0:a - - $ hg branches -T '{index} {branch}\n' - 0 default - 1 foo - -ui verbosity: - - $ hg log -l1 -T '{verbosity}\n' - - $ hg log -l1 -T '{verbosity}\n' --debug - debug - $ hg log -l1 -T '{verbosity}\n' --quiet - quiet - $ hg log -l1 -T '{verbosity}\n' --verbose - verbose - $ cd .. - -latesttag: +Set up latesttag repository: $ hg init latesttag $ cd latesttag @@ -1105,165 +431,12 @@ $ hg merge -q $ hg ci -m merge -d '5 -3600' -No tag set: - - $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' - @ 5: null+5 - |\ - | o 4: null+4 - | | - | o 3: null+3 - | | - o | 2: null+3 - |/ - o 1: null+2 - | - o 0: null+1 - - -One common tag: longest path wins for {latesttagdistance}: - $ hg tag -r 1 -m t1 -d '6 0' t1 - $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' - @ 6: t1+4 - | - o 5: t1+3 - |\ - | o 4: t1+2 - | | - | o 3: t1+1 - | | - o | 2: t1+1 - |/ - o 1: t1+0 - | - o 0: null+1 - - -One ancestor tag: closest wins: - $ hg tag -r 2 -m t2 -d '7 0' t2 - $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' - @ 7: t2+3 - | - o 6: t2+2 - | - o 5: t2+1 - |\ - | o 4: t1+2 - | | - | o 3: t1+1 - | | - o | 2: t2+0 - |/ - o 1: t1+0 - | - o 0: null+1 - - -Two branch tags: more recent wins if same number of changes: - $ hg tag -r 3 -m t3 -d '8 0' t3 - $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' - @ 8: t3+5 - | - o 7: t3+4 - | - o 6: t3+3 - | - o 5: t3+2 - |\ - | o 4: t3+1 - | | - | o 3: t3+0 - | | - o | 2: t2+0 - |/ - o 1: t1+0 - | - o 0: null+1 - - -Two branch tags: fewest changes wins: - $ hg tag -r 4 -m t4 -d '4 0' t4 # older than t2, but should not matter - $ hg log -G --template "{rev}: {latesttag % '{tag}+{distance},{changes} '}\n" - @ 9: t4+5,6 - | - o 8: t4+4,5 - | - o 7: t4+3,4 - | - o 6: t4+2,3 - | - o 5: t4+1,2 - |\ - | o 4: t4+0,0 - | | - | o 3: t3+0,0 - | | - o | 2: t2+0,0 - |/ - o 1: t1+0,0 - | - o 0: null+1,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 -G --template '{rev}: {latesttag}+{latesttagdistance}\n' - @ 11: t5+6 - | - o 10: t5+5 - | - o 9: t5+4 - | - o 8: t5+3 - | - o 7: t5+2 - | - o 6: t5+1 - | - o 5: t5+0 - |\ - | o 4: t4+0 - | | - | o 3: at3:t3+0 - | | - o | 2: t2+0 - |/ - o 1: t1+0 - | - o 0: null+1 - - - $ hg log -G --template "{rev}: {latesttag % '{tag}+{distance},{changes} '}\n" - @ 11: t5+6,6 - | - o 10: t5+5,5 - | - o 9: t5+4,4 - | - o 8: t5+3,3 - | - o 7: t5+2,2 - | - o 6: t5+1,1 - | - o 5: t5+0,0 - |\ - | o 4: t4+0,0 - | | - | o 3: at3+0,0 t3+0,0 - | | - o | 2: t2+0,0 - |/ - o 1: t1+0,0 - | - o 0: null+1,1 - $ cd .. @@ -1725,11 +898,6 @@ hg: parse error: fill expects an integer width [255] - $ COLUMNS=25 hg log -l1 --template '{fill(desc, termwidth, "{node|short}:", "termwidth.{rev}:")}' - bcc7ff960b8e:desc to be - termwidth.1:wrapped desc - termwidth.1:to be wrapped (no-eol) - $ hg log -l 1 --template '{sub(r"[0-9]", "-", author)}' {node|short} (no-eol) $ hg log -l 1 --template '{sub(r"[0-9]", "-", "{node|short}")}' @@ -1748,97 +916,6 @@ $ hg log --color=always -l 1 --template '{label("text.{rev}", "text\n")}' \x1b[0;32mtext\x1b[0m (esc) -Just one more commit: - - $ echo b > b - $ hg ci -qAm b - -Test 'originalnode' - - $ hg log -r 1 -T '{revset("null") % "{node|short} {originalnode|short}"}\n' - 000000000000 bcc7ff960b8e - $ hg log -r 0 -T '{manifest % "{node} {originalnode}"}\n' - a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 f7769ec2ab975ad19684098ad1ffd9b81ecc71a1 - -Test active bookmark templating - - $ hg book foo - $ hg book bar - $ hg log --template "{rev} {bookmarks % '{bookmark}{ifeq(bookmark, active, \"*\")} '}\n" - 2 bar* foo - 1 - 0 - $ hg log --template "{rev} {activebookmark}\n" - 2 bar - 1 - 0 - $ hg bookmarks --inactive bar - $ hg log --template "{rev} {activebookmark}\n" - 2 - 1 - 0 - $ hg book -r1 baz - $ hg log --template "{rev} {join(bookmarks, ' ')}\n" - 2 bar foo - 1 baz - 0 - $ hg log --template "{rev} {ifcontains('foo', bookmarks, 't', 'f')}\n" - 2 t - 1 f - 0 f - -Test namespaces dict - - $ hg --config extensions.revnamesext=$TESTDIR/revnamesext.py log -T '{rev}\n{namespaces % " {namespace} color={colorname} builtin={builtin}\n {join(names, ",")}\n"}\n' - 2 - bookmarks color=bookmark builtin=True - bar,foo - tags color=tag builtin=True - tip - branches color=branch builtin=True - text.{rev} - revnames color=revname builtin=False - r2 - - 1 - bookmarks color=bookmark builtin=True - baz - tags color=tag builtin=True - - branches color=branch builtin=True - text.{rev} - revnames color=revname builtin=False - r1 - - 0 - bookmarks color=bookmark builtin=True - - tags color=tag builtin=True - - branches color=branch builtin=True - default - revnames color=revname builtin=False - r0 - - $ hg log -r2 -T '{namespaces % "{namespace}: {names}\n"}' - bookmarks: bar foo - tags: tip - branches: text.{rev} - $ hg log -r2 -T '{namespaces % "{namespace}:\n{names % " {name}\n"}"}' - bookmarks: - bar - foo - tags: - tip - branches: - text.{rev} - $ hg log -r2 -T '{get(namespaces, "bookmarks") % "{name}\n"}' - bar - foo - $ hg log -r2 -T '{namespaces.bookmarks % "{bookmark}\n"}' - bar - foo - $ cd .. Test bad template with better error message @@ -2006,155 +1083,3 @@ custom $ cd .. - -Test 'graphwidth' in 'hg log' on various topologies. The key here is that the -printed graphwidths 3, 5, 7, etc. should all line up in their respective -columns. We don't care about other aspects of the graph rendering here. - - $ hg init graphwidth - $ cd graphwidth - - $ wrappabletext="a a a a a a a a a a a a" - - $ printf "first\n" > file - $ hg add file - $ hg commit -m "$wrappabletext" - - $ printf "first\nsecond\n" > file - $ hg commit -m "$wrappabletext" - - $ hg checkout 0 - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ printf "third\nfirst\n" > file - $ hg commit -m "$wrappabletext" - created new head - - $ hg merge - merging file - 0 files updated, 1 files merged, 0 files removed, 0 files unresolved - (branch merge, don't forget to commit) - - $ hg log --graph -T "{graphwidth}" - @ 3 - | - | @ 5 - |/ - o 3 - - $ hg commit -m "$wrappabletext" - - $ hg log --graph -T "{graphwidth}" - @ 5 - |\ - | o 5 - | | - o | 5 - |/ - o 3 - - - $ hg checkout 0 - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ printf "third\nfirst\nsecond\n" > file - $ hg commit -m "$wrappabletext" - created new head - - $ hg log --graph -T "{graphwidth}" - @ 3 - | - | o 7 - | |\ - +---o 7 - | | - | o 5 - |/ - o 3 - - - $ hg log --graph -T "{graphwidth}" -r 3 - o 5 - |\ - ~ ~ - - $ hg log --graph -T "{graphwidth}" -r 1 - o 3 - | - ~ - - $ hg merge - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - (branch merge, don't forget to commit) - $ hg commit -m "$wrappabletext" - - $ printf "seventh\n" >> file - $ hg commit -m "$wrappabletext" - - $ hg log --graph -T "{graphwidth}" - @ 3 - | - o 5 - |\ - | o 5 - | | - o | 7 - |\ \ - | o | 7 - | |/ - o / 5 - |/ - o 3 - - -The point of graphwidth is to allow wrapping that accounts for the space taken -by the graph. - - $ COLUMNS=10 hg log --graph -T "{fill(desc, termwidth - graphwidth)}" - @ a a a a - | a a a a - | a a a a - o a a a - |\ a a a - | | a a a - | | a a a - | o a a a - | | a a a - | | a a a - | | a a a - o | a a - |\ \ a a - | | | a a - | | | a a - | | | a a - | | | a a - | o | a a - | |/ a a - | | a a - | | a a - | | a a - | | a a - o | a a a - |/ a a a - | a a a - | a a a - o a a a a - a a a a - a a a a - -Something tricky happens when there are elided nodes; the next drawn row of -edges can be more than one column wider, but the graph width only increases by -one column. The remaining columns are added in between the nodes. - - $ hg log --graph -T "{graphwidth}" -r "0|2|4|5" - o 5 - |\ - | \ - | :\ - o : : 7 - :/ / - : o 5 - :/ - o 3 - - - $ cd .. -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-template-keywords.t Sat Jun 16 14:14:52 2018 +0900 @@ -0,0 +1,1195 @@ +Test template keywords +====================== + + $ 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" + +Working-directory revision has special identifiers, though they are still +experimental: + + $ hg log -r 'wdir()' -T '{rev}:{node}\n' + 2147483647:ffffffffffffffffffffffffffffffffffffffff + +Some keywords are invalid for working-directory revision, but they should +never cause crash: + + $ hg log -r 'wdir()' -T '{manifest}\n' + + +Check that {phase} works correctly on parents: + + $ cat << EOF > parentphase + > changeset_debug = '{rev} ({phase}):{parents}\n' + > parent = ' {rev} ({phase})' + > EOF + $ hg phase -r 5 --public + $ hg phase -r 7 --secret --force + $ hg log --debug -G --style ./parentphase + @ 8 (secret): 7 (secret) -1 (public) + | + o 7 (secret): -1 (public) -1 (public) + + o 6 (draft): 5 (public) 4 (draft) + |\ + | o 5 (public): 3 (public) -1 (public) + | | + o | 4 (draft): 3 (public) -1 (public) + |/ + o 3 (public): 2 (public) -1 (public) + | + o 2 (public): 1 (public) -1 (public) + | + o 1 (public): 0 (public) -1 (public) + | + o 0 (public): -1 (public) -1 (public) + + +Keys work: + + $ for key in author branch branches date desc file_adds file_dels file_mods \ + > file_copies file_copies_switch files \ + > manifest node parents rev tags diffstat extras \ + > p1rev p2rev p1node p2node; 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> + branch: default + branch: default + branch: default + branch: default + branch: foo + branch: default + branch: default + branch: default + branch: default + branch--verbose: default + branch--verbose: default + branch--verbose: default + branch--verbose: default + branch--verbose: foo + branch--verbose: default + branch--verbose: default + branch--verbose: default + branch--verbose: default + branch--debug: default + branch--debug: default + branch--debug: default + branch--debug: default + branch--debug: foo + branch--debug: default + branch--debug: default + branch--debug: default + branch--debug: default + 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: 6:94961b75a2da + manifest: 5:f2dbc354b94e + manifest: 4:4dc3def4f9b4 + manifest: 4:4dc3def4f9b4 + manifest: 3:cb5a1327723b + manifest: 3:cb5a1327723b + manifest: 2:6e0e82995c35 + manifest: 1:4e8d705b1e53 + manifest: 0:a0c8bcbbb45c + manifest--verbose: 6:94961b75a2da + manifest--verbose: 5:f2dbc354b94e + manifest--verbose: 4:4dc3def4f9b4 + manifest--verbose: 4:4dc3def4f9b4 + manifest--verbose: 3:cb5a1327723b + manifest--verbose: 3:cb5a1327723b + manifest--verbose: 2:6e0e82995c35 + manifest--verbose: 1:4e8d705b1e53 + manifest--verbose: 0:a0c8bcbbb45c + manifest--debug: 6:94961b75a2da554b4df6fb599e5bfc7d48de0c64 + manifest--debug: 5:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf + manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216 + manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216 + manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc + manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc + manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1 + manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55 + manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 + node: 95c24699272ef57d062b8bccc32c878bf841784a + node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 + node: d41e714fe50d9e4a5f11b4d595d543481b5f980b + node: 13207e5a10d9fd28ec424934298e176197f2c67f + node: bbe44766e73d5f11ed2177f1838de10c53ef3e74 + node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + node: 97054abb4ab824450e9164180baf491ae0078465 + node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 + node: 1e4e1b8f71e05681d422154f5421e385fec3454f + node--verbose: 95c24699272ef57d062b8bccc32c878bf841784a + node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 + node--verbose: d41e714fe50d9e4a5f11b4d595d543481b5f980b + node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f + node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74 + node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + node--verbose: 97054abb4ab824450e9164180baf491ae0078465 + node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 + node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f + node--debug: 95c24699272ef57d062b8bccc32c878bf841784a + node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 + node--debug: d41e714fe50d9e4a5f11b4d595d543481b5f980b + node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f + node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74 + node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + node--debug: 97054abb4ab824450e9164180baf491ae0078465 + node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 + node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f + parents: + parents: -1:000000000000 + parents: 5:13207e5a10d9 4:bbe44766e73d + parents: 3:10e46f2dcbf4 + parents: + parents: + parents: + parents: + parents: + parents--verbose: + parents--verbose: -1:000000000000 + parents--verbose: 5:13207e5a10d9 4:bbe44766e73d + 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:bbe44766e73d5f11ed2177f1838de10c53ef3e74 + 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 + p1rev: 7 + p1rev: -1 + p1rev: 5 + p1rev: 3 + p1rev: 3 + p1rev: 2 + p1rev: 1 + p1rev: 0 + p1rev: -1 + p1rev--verbose: 7 + p1rev--verbose: -1 + p1rev--verbose: 5 + p1rev--verbose: 3 + p1rev--verbose: 3 + p1rev--verbose: 2 + p1rev--verbose: 1 + p1rev--verbose: 0 + p1rev--verbose: -1 + p1rev--debug: 7 + p1rev--debug: -1 + p1rev--debug: 5 + p1rev--debug: 3 + p1rev--debug: 3 + p1rev--debug: 2 + p1rev--debug: 1 + p1rev--debug: 0 + p1rev--debug: -1 + p2rev: -1 + p2rev: -1 + p2rev: 4 + p2rev: -1 + p2rev: -1 + p2rev: -1 + p2rev: -1 + p2rev: -1 + p2rev: -1 + p2rev--verbose: -1 + p2rev--verbose: -1 + p2rev--verbose: 4 + p2rev--verbose: -1 + p2rev--verbose: -1 + p2rev--verbose: -1 + p2rev--verbose: -1 + p2rev--verbose: -1 + p2rev--verbose: -1 + p2rev--debug: -1 + p2rev--debug: -1 + p2rev--debug: 4 + p2rev--debug: -1 + p2rev--debug: -1 + p2rev--debug: -1 + p2rev--debug: -1 + p2rev--debug: -1 + p2rev--debug: -1 + p1node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 + p1node: 0000000000000000000000000000000000000000 + p1node: 13207e5a10d9fd28ec424934298e176197f2c67f + p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + p1node: 97054abb4ab824450e9164180baf491ae0078465 + p1node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 + p1node: 1e4e1b8f71e05681d422154f5421e385fec3454f + p1node: 0000000000000000000000000000000000000000 + p1node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 + p1node--verbose: 0000000000000000000000000000000000000000 + p1node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f + p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + p1node--verbose: 97054abb4ab824450e9164180baf491ae0078465 + p1node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 + p1node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f + p1node--verbose: 0000000000000000000000000000000000000000 + p1node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453 + p1node--debug: 0000000000000000000000000000000000000000 + p1node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f + p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 + p1node--debug: 97054abb4ab824450e9164180baf491ae0078465 + p1node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 + p1node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f + p1node--debug: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node: bbe44766e73d5f11ed2177f1838de10c53ef3e74 + p2node: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--verbose: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + p2node--debug: 0000000000000000000000000000000000000000 + +Add a dummy commit to make up for the instability of the above: + + $ echo a > a + $ hg add a + $ hg ci -m future + +Add a commit that does all possible modifications at once + + $ echo modify >> third + $ touch b + $ hg add b + $ hg mv fourth fifth + $ hg rm a + $ hg ci -m "Modify, add, remove, rename" + +Test index keyword: + + $ hg log -l 2 -T '{index + 10}{files % " {index}:{file}"}\n' + 10 0:a 1:b 2:fifth 3:fourth 4:third + 11 0:a + + $ hg branches -T '{index} {branch}\n' + 0 default + 1 foo + +ui verbosity: + + $ hg log -l1 -T '{verbosity}\n' + + $ hg log -l1 -T '{verbosity}\n' --debug + debug + $ hg log -l1 -T '{verbosity}\n' --quiet + quiet + $ hg log -l1 -T '{verbosity}\n' --verbose + verbose + + $ 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 -3600' + +No tag set: + + $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' + @ 5: null+5 + |\ + | o 4: null+4 + | | + | o 3: null+3 + | | + o | 2: null+3 + |/ + o 1: null+2 + | + o 0: null+1 + + +One common tag: longest path wins for {latesttagdistance}: + + $ hg tag -r 1 -m t1 -d '6 0' t1 + $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' + @ 6: t1+4 + | + o 5: t1+3 + |\ + | o 4: t1+2 + | | + | o 3: t1+1 + | | + o | 2: t1+1 + |/ + o 1: t1+0 + | + o 0: null+1 + + +One ancestor tag: closest wins: + + $ hg tag -r 2 -m t2 -d '7 0' t2 + $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' + @ 7: t2+3 + | + o 6: t2+2 + | + o 5: t2+1 + |\ + | o 4: t1+2 + | | + | o 3: t1+1 + | | + o | 2: t2+0 + |/ + o 1: t1+0 + | + o 0: null+1 + + +Two branch tags: more recent wins if same number of changes: + + $ hg tag -r 3 -m t3 -d '8 0' t3 + $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n' + @ 8: t3+5 + | + o 7: t3+4 + | + o 6: t3+3 + | + o 5: t3+2 + |\ + | o 4: t3+1 + | | + | o 3: t3+0 + | | + o | 2: t2+0 + |/ + o 1: t1+0 + | + o 0: null+1 + + +Two branch tags: fewest changes wins: + + $ hg tag -r 4 -m t4 -d '4 0' t4 # older than t2, but should not matter + $ hg log -G --template "{rev}: {latesttag % '{tag}+{distance},{changes} '}\n" + @ 9: t4+5,6 + | + o 8: t4+4,5 + | + o 7: t4+3,4 + | + o 6: t4+2,3 + | + o 5: t4+1,2 + |\ + | o 4: t4+0,0 + | | + | o 3: t3+0,0 + | | + o | 2: t2+0,0 + |/ + o 1: t1+0,0 + | + o 0: null+1,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 -G --template '{rev}: {latesttag}+{latesttagdistance}\n' + @ 11: t5+6 + | + o 10: t5+5 + | + o 9: t5+4 + | + o 8: t5+3 + | + o 7: t5+2 + | + o 6: t5+1 + | + o 5: t5+0 + |\ + | o 4: t4+0 + | | + | o 3: at3:t3+0 + | | + o | 2: t2+0 + |/ + o 1: t1+0 + | + o 0: null+1 + + + $ hg log -G --template "{rev}: {latesttag % '{tag}+{distance},{changes} '}\n" + @ 11: t5+6,6 + | + o 10: t5+5,5 + | + o 9: t5+4,4 + | + o 8: t5+3,3 + | + o 7: t5+2,2 + | + o 6: t5+1,1 + | + o 5: t5+0,0 + |\ + | o 4: t4+0,0 + | | + | o 3: at3+0,0 t3+0,0 + | | + o | 2: t2+0,0 + |/ + o 1: t1+0,0 + | + o 0: null+1,1 + + + $ cd .. + +Set up repository containing template fragments in commit metadata: + + $ hg init r + $ cd r + $ echo a > a + $ hg ci -Am '{rev}' + adding a + + $ hg branch -q 'text.{rev}' + $ echo aa >> aa + $ hg ci -u '{node|short}' -m 'desc to be wrapped desc to be wrapped' + +Test termwidth: + + $ COLUMNS=25 hg log -l1 --template '{fill(desc, termwidth, "{node|short}:", "termwidth.{rev}:")}' + bcc7ff960b8e:desc to be + termwidth.1:wrapped desc + termwidth.1:to be wrapped (no-eol) + +Just one more commit: + + $ echo b > b + $ hg ci -qAm b + +Test 'originalnode' + + $ hg log -r 1 -T '{revset("null") % "{node|short} {originalnode|short}"}\n' + 000000000000 bcc7ff960b8e + $ hg log -r 0 -T '{manifest % "{node} {originalnode}"}\n' + a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 f7769ec2ab975ad19684098ad1ffd9b81ecc71a1 + +Test active bookmark templating + + $ hg book foo + $ hg book bar + $ hg log --template "{rev} {bookmarks % '{bookmark}{ifeq(bookmark, active, \"*\")} '}\n" + 2 bar* foo + 1 + 0 + $ hg log --template "{rev} {activebookmark}\n" + 2 bar + 1 + 0 + $ hg bookmarks --inactive bar + $ hg log --template "{rev} {activebookmark}\n" + 2 + 1 + 0 + $ hg book -r1 baz + $ hg log --template "{rev} {join(bookmarks, ' ')}\n" + 2 bar foo + 1 baz + 0 + $ hg log --template "{rev} {ifcontains('foo', bookmarks, 't', 'f')}\n" + 2 t + 1 f + 0 f + +Test namespaces dict + + $ hg --config extensions.revnamesext=$TESTDIR/revnamesext.py log -T '{rev}\n{namespaces % " {namespace} color={colorname} builtin={builtin}\n {join(names, ",")}\n"}\n' + 2 + bookmarks color=bookmark builtin=True + bar,foo + tags color=tag builtin=True + tip + branches color=branch builtin=True + text.{rev} + revnames color=revname builtin=False + r2 + + 1 + bookmarks color=bookmark builtin=True + baz + tags color=tag builtin=True + + branches color=branch builtin=True + text.{rev} + revnames color=revname builtin=False + r1 + + 0 + bookmarks color=bookmark builtin=True + + tags color=tag builtin=True + + branches color=branch builtin=True + default + revnames color=revname builtin=False + r0 + + $ hg log -r2 -T '{namespaces % "{namespace}: {names}\n"}' + bookmarks: bar foo + tags: tip + branches: text.{rev} + $ hg log -r2 -T '{namespaces % "{namespace}:\n{names % " {name}\n"}"}' + bookmarks: + bar + foo + tags: + tip + branches: + text.{rev} + $ hg log -r2 -T '{get(namespaces, "bookmarks") % "{name}\n"}' + bar + foo + $ hg log -r2 -T '{namespaces.bookmarks % "{bookmark}\n"}' + bar + foo + + $ cd .. + +Test 'graphwidth' in 'hg log' on various topologies. The key here is that the +printed graphwidths 3, 5, 7, etc. should all line up in their respective +columns. We don't care about other aspects of the graph rendering here. + + $ hg init graphwidth + $ cd graphwidth + + $ wrappabletext="a a a a a a a a a a a a" + + $ printf "first\n" > file + $ hg add file + $ hg commit -m "$wrappabletext" + + $ printf "first\nsecond\n" > file + $ hg commit -m "$wrappabletext" + + $ hg checkout 0 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ printf "third\nfirst\n" > file + $ hg commit -m "$wrappabletext" + created new head + + $ hg merge + merging file + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + + $ hg log --graph -T "{graphwidth}" + @ 3 + | + | @ 5 + |/ + o 3 + + $ hg commit -m "$wrappabletext" + + $ hg log --graph -T "{graphwidth}" + @ 5 + |\ + | o 5 + | | + o | 5 + |/ + o 3 + + + $ hg checkout 0 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ printf "third\nfirst\nsecond\n" > file + $ hg commit -m "$wrappabletext" + created new head + + $ hg log --graph -T "{graphwidth}" + @ 3 + | + | o 7 + | |\ + +---o 7 + | | + | o 5 + |/ + o 3 + + + $ hg log --graph -T "{graphwidth}" -r 3 + o 5 + |\ + ~ ~ + + $ hg log --graph -T "{graphwidth}" -r 1 + o 3 + | + ~ + + $ hg merge + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg commit -m "$wrappabletext" + + $ printf "seventh\n" >> file + $ hg commit -m "$wrappabletext" + + $ hg log --graph -T "{graphwidth}" + @ 3 + | + o 5 + |\ + | o 5 + | | + o | 7 + |\ \ + | o | 7 + | |/ + o / 5 + |/ + o 3 + + +The point of graphwidth is to allow wrapping that accounts for the space taken +by the graph. + + $ COLUMNS=10 hg log --graph -T "{fill(desc, termwidth - graphwidth)}" + @ a a a a + | a a a a + | a a a a + o a a a + |\ a a a + | | a a a + | | a a a + | o a a a + | | a a a + | | a a a + | | a a a + o | a a + |\ \ a a + | | | a a + | | | a a + | | | a a + | | | a a + | o | a a + | |/ a a + | | a a + | | a a + | | a a + | | a a + o | a a a + |/ a a a + | a a a + | a a a + o a a a a + a a a a + a a a a + +Something tricky happens when there are elided nodes; the next drawn row of +edges can be more than one column wider, but the graph width only increases by +one column. The remaining columns are added in between the nodes. + + $ hg log --graph -T "{graphwidth}" -r "0|2|4|5" + o 5 + |\ + | \ + | :\ + o : : 7 + :/ / + : o 5 + :/ + o 3 + + + $ cd ..