tests/test-command-template.t
changeset 38436 da4508cdef37
parent 38434 70f551a3f52e
equal deleted inserted replaced
38435:6a8ed5c7e112 38436:da4508cdef37
   208   second -> fourth
   208   second -> fourth
   209   $ hg log -T '{rev} {ifcontains("fourth", file_copies, "t", "f")}\n' -r .:7
   209   $ hg log -T '{rev} {ifcontains("fourth", file_copies, "t", "f")}\n' -r .:7
   210   8 t
   210   8 t
   211   7 f
   211   7 f
   212 
   212 
   213 Working-directory revision has special identifiers, though they are still
       
   214 experimental:
       
   215 
       
   216   $ hg log -r 'wdir()' -T '{rev}:{node}\n'
       
   217   2147483647:ffffffffffffffffffffffffffffffffffffffff
       
   218 
       
   219 Some keywords are invalid for working-directory revision, but they should
       
   220 never cause crash:
       
   221 
       
   222   $ hg log -r 'wdir()' -T '{manifest}\n'
       
   223   
       
   224 
       
   225 Internal resources shouldn't be exposed (issue5699):
   213 Internal resources shouldn't be exposed (issue5699):
   226 
   214 
   227   $ hg log -r. -T '{cache}{ctx}{repo}{revcache}{templ}{ui}'
   215   $ hg log -r. -T '{cache}{ctx}{repo}{revcache}{templ}{ui}'
   228 
   216 
   229 Never crash on internal resource not available:
   217 Never crash on internal resource not available:
   282   > rev = '{rev} {tag}\n'
   270   > rev = '{rev} {tag}\n'
   283   > EOF
   271   > EOF
   284   $ hg log --style ./issue4758 -r tip
   272   $ hg log --style ./issue4758 -r tip
   285   8 tip
   273   8 tip
   286 
   274 
   287 Check that {phase} works correctly on parents:
   275 Set up phase:
   288 
   276 
   289   $ cat << EOF > parentphase
       
   290   > changeset_debug = '{rev} ({phase}):{parents}\n'
       
   291   > parent = ' {rev} ({phase})'
       
   292   > EOF
       
   293   $ hg phase -r 5 --public
   277   $ hg phase -r 5 --public
   294   $ hg phase -r 7 --secret --force
   278   $ hg phase -r 7 --secret --force
   295   $ hg log --debug -G --style ./parentphase
       
   296   @  8 (secret): 7 (secret) -1 (public)
       
   297   |
       
   298   o  7 (secret): -1 (public) -1 (public)
       
   299   
       
   300   o    6 (draft): 5 (public) 4 (draft)
       
   301   |\
       
   302   | o  5 (public): 3 (public) -1 (public)
       
   303   | |
       
   304   o |  4 (draft): 3 (public) -1 (public)
       
   305   |/
       
   306   o  3 (public): 2 (public) -1 (public)
       
   307   |
       
   308   o  2 (public): 1 (public) -1 (public)
       
   309   |
       
   310   o  1 (public): 0 (public) -1 (public)
       
   311   |
       
   312   o  0 (public): -1 (public) -1 (public)
       
   313   
       
   314 
       
   315 Keys work:
       
   316 
       
   317   $ for key in author branch branches date desc file_adds file_dels file_mods \
       
   318   >         file_copies file_copies_switch files \
       
   319   >         manifest node parents rev tags diffstat extras \
       
   320   >         p1rev p2rev p1node p2node; do
       
   321   >     for mode in '' --verbose --debug; do
       
   322   >         hg log $mode --template "$key$mode: {$key}\n"
       
   323   >     done
       
   324   > done
       
   325   author: test
       
   326   author: User Name <user@hostname>
       
   327   author: person
       
   328   author: person
       
   329   author: person
       
   330   author: person
       
   331   author: other@place
       
   332   author: A. N. Other <other@place>
       
   333   author: User Name <user@hostname>
       
   334   author--verbose: test
       
   335   author--verbose: User Name <user@hostname>
       
   336   author--verbose: person
       
   337   author--verbose: person
       
   338   author--verbose: person
       
   339   author--verbose: person
       
   340   author--verbose: other@place
       
   341   author--verbose: A. N. Other <other@place>
       
   342   author--verbose: User Name <user@hostname>
       
   343   author--debug: test
       
   344   author--debug: User Name <user@hostname>
       
   345   author--debug: person
       
   346   author--debug: person
       
   347   author--debug: person
       
   348   author--debug: person
       
   349   author--debug: other@place
       
   350   author--debug: A. N. Other <other@place>
       
   351   author--debug: User Name <user@hostname>
       
   352   branch: default
       
   353   branch: default
       
   354   branch: default
       
   355   branch: default
       
   356   branch: foo
       
   357   branch: default
       
   358   branch: default
       
   359   branch: default
       
   360   branch: default
       
   361   branch--verbose: default
       
   362   branch--verbose: default
       
   363   branch--verbose: default
       
   364   branch--verbose: default
       
   365   branch--verbose: foo
       
   366   branch--verbose: default
       
   367   branch--verbose: default
       
   368   branch--verbose: default
       
   369   branch--verbose: default
       
   370   branch--debug: default
       
   371   branch--debug: default
       
   372   branch--debug: default
       
   373   branch--debug: default
       
   374   branch--debug: foo
       
   375   branch--debug: default
       
   376   branch--debug: default
       
   377   branch--debug: default
       
   378   branch--debug: default
       
   379   branches: 
       
   380   branches: 
       
   381   branches: 
       
   382   branches: 
       
   383   branches: foo
       
   384   branches: 
       
   385   branches: 
       
   386   branches: 
       
   387   branches: 
       
   388   branches--verbose: 
       
   389   branches--verbose: 
       
   390   branches--verbose: 
       
   391   branches--verbose: 
       
   392   branches--verbose: foo
       
   393   branches--verbose: 
       
   394   branches--verbose: 
       
   395   branches--verbose: 
       
   396   branches--verbose: 
       
   397   branches--debug: 
       
   398   branches--debug: 
       
   399   branches--debug: 
       
   400   branches--debug: 
       
   401   branches--debug: foo
       
   402   branches--debug: 
       
   403   branches--debug: 
       
   404   branches--debug: 
       
   405   branches--debug: 
       
   406   date: 1577872860.00
       
   407   date: 1000000.00
       
   408   date: 1500001.00
       
   409   date: 1500000.00
       
   410   date: 1400000.00
       
   411   date: 1300000.00
       
   412   date: 1200000.00
       
   413   date: 1100000.00
       
   414   date: 1000000.00
       
   415   date--verbose: 1577872860.00
       
   416   date--verbose: 1000000.00
       
   417   date--verbose: 1500001.00
       
   418   date--verbose: 1500000.00
       
   419   date--verbose: 1400000.00
       
   420   date--verbose: 1300000.00
       
   421   date--verbose: 1200000.00
       
   422   date--verbose: 1100000.00
       
   423   date--verbose: 1000000.00
       
   424   date--debug: 1577872860.00
       
   425   date--debug: 1000000.00
       
   426   date--debug: 1500001.00
       
   427   date--debug: 1500000.00
       
   428   date--debug: 1400000.00
       
   429   date--debug: 1300000.00
       
   430   date--debug: 1200000.00
       
   431   date--debug: 1100000.00
       
   432   date--debug: 1000000.00
       
   433   desc: third
       
   434   desc: second
       
   435   desc: merge
       
   436   desc: new head
       
   437   desc: new branch
       
   438   desc: no user, no domain
       
   439   desc: no person
       
   440   desc: other 1
       
   441   other 2
       
   442   
       
   443   other 3
       
   444   desc: line 1
       
   445   line 2
       
   446   desc--verbose: third
       
   447   desc--verbose: second
       
   448   desc--verbose: merge
       
   449   desc--verbose: new head
       
   450   desc--verbose: new branch
       
   451   desc--verbose: no user, no domain
       
   452   desc--verbose: no person
       
   453   desc--verbose: other 1
       
   454   other 2
       
   455   
       
   456   other 3
       
   457   desc--verbose: line 1
       
   458   line 2
       
   459   desc--debug: third
       
   460   desc--debug: second
       
   461   desc--debug: merge
       
   462   desc--debug: new head
       
   463   desc--debug: new branch
       
   464   desc--debug: no user, no domain
       
   465   desc--debug: no person
       
   466   desc--debug: other 1
       
   467   other 2
       
   468   
       
   469   other 3
       
   470   desc--debug: line 1
       
   471   line 2
       
   472   file_adds: fourth third
       
   473   file_adds: second
       
   474   file_adds: 
       
   475   file_adds: d
       
   476   file_adds: 
       
   477   file_adds: 
       
   478   file_adds: c
       
   479   file_adds: b
       
   480   file_adds: a
       
   481   file_adds--verbose: fourth third
       
   482   file_adds--verbose: second
       
   483   file_adds--verbose: 
       
   484   file_adds--verbose: d
       
   485   file_adds--verbose: 
       
   486   file_adds--verbose: 
       
   487   file_adds--verbose: c
       
   488   file_adds--verbose: b
       
   489   file_adds--verbose: a
       
   490   file_adds--debug: fourth third
       
   491   file_adds--debug: second
       
   492   file_adds--debug: 
       
   493   file_adds--debug: d
       
   494   file_adds--debug: 
       
   495   file_adds--debug: 
       
   496   file_adds--debug: c
       
   497   file_adds--debug: b
       
   498   file_adds--debug: a
       
   499   file_dels: second
       
   500   file_dels: 
       
   501   file_dels: 
       
   502   file_dels: 
       
   503   file_dels: 
       
   504   file_dels: 
       
   505   file_dels: 
       
   506   file_dels: 
       
   507   file_dels: 
       
   508   file_dels--verbose: second
       
   509   file_dels--verbose: 
       
   510   file_dels--verbose: 
       
   511   file_dels--verbose: 
       
   512   file_dels--verbose: 
       
   513   file_dels--verbose: 
       
   514   file_dels--verbose: 
       
   515   file_dels--verbose: 
       
   516   file_dels--verbose: 
       
   517   file_dels--debug: second
       
   518   file_dels--debug: 
       
   519   file_dels--debug: 
       
   520   file_dels--debug: 
       
   521   file_dels--debug: 
       
   522   file_dels--debug: 
       
   523   file_dels--debug: 
       
   524   file_dels--debug: 
       
   525   file_dels--debug: 
       
   526   file_mods: 
       
   527   file_mods: 
       
   528   file_mods: 
       
   529   file_mods: 
       
   530   file_mods: 
       
   531   file_mods: c
       
   532   file_mods: 
       
   533   file_mods: 
       
   534   file_mods: 
       
   535   file_mods--verbose: 
       
   536   file_mods--verbose: 
       
   537   file_mods--verbose: 
       
   538   file_mods--verbose: 
       
   539   file_mods--verbose: 
       
   540   file_mods--verbose: c
       
   541   file_mods--verbose: 
       
   542   file_mods--verbose: 
       
   543   file_mods--verbose: 
       
   544   file_mods--debug: 
       
   545   file_mods--debug: 
       
   546   file_mods--debug: 
       
   547   file_mods--debug: 
       
   548   file_mods--debug: 
       
   549   file_mods--debug: c
       
   550   file_mods--debug: 
       
   551   file_mods--debug: 
       
   552   file_mods--debug: 
       
   553   file_copies: fourth (second)
       
   554   file_copies: 
       
   555   file_copies: 
       
   556   file_copies: 
       
   557   file_copies: 
       
   558   file_copies: 
       
   559   file_copies: 
       
   560   file_copies: 
       
   561   file_copies: 
       
   562   file_copies--verbose: fourth (second)
       
   563   file_copies--verbose: 
       
   564   file_copies--verbose: 
       
   565   file_copies--verbose: 
       
   566   file_copies--verbose: 
       
   567   file_copies--verbose: 
       
   568   file_copies--verbose: 
       
   569   file_copies--verbose: 
       
   570   file_copies--verbose: 
       
   571   file_copies--debug: fourth (second)
       
   572   file_copies--debug: 
       
   573   file_copies--debug: 
       
   574   file_copies--debug: 
       
   575   file_copies--debug: 
       
   576   file_copies--debug: 
       
   577   file_copies--debug: 
       
   578   file_copies--debug: 
       
   579   file_copies--debug: 
       
   580   file_copies_switch: 
       
   581   file_copies_switch: 
       
   582   file_copies_switch: 
       
   583   file_copies_switch: 
       
   584   file_copies_switch: 
       
   585   file_copies_switch: 
       
   586   file_copies_switch: 
       
   587   file_copies_switch: 
       
   588   file_copies_switch: 
       
   589   file_copies_switch--verbose: 
       
   590   file_copies_switch--verbose: 
       
   591   file_copies_switch--verbose: 
       
   592   file_copies_switch--verbose: 
       
   593   file_copies_switch--verbose: 
       
   594   file_copies_switch--verbose: 
       
   595   file_copies_switch--verbose: 
       
   596   file_copies_switch--verbose: 
       
   597   file_copies_switch--verbose: 
       
   598   file_copies_switch--debug: 
       
   599   file_copies_switch--debug: 
       
   600   file_copies_switch--debug: 
       
   601   file_copies_switch--debug: 
       
   602   file_copies_switch--debug: 
       
   603   file_copies_switch--debug: 
       
   604   file_copies_switch--debug: 
       
   605   file_copies_switch--debug: 
       
   606   file_copies_switch--debug: 
       
   607   files: fourth second third
       
   608   files: second
       
   609   files: 
       
   610   files: d
       
   611   files: 
       
   612   files: c
       
   613   files: c
       
   614   files: b
       
   615   files: a
       
   616   files--verbose: fourth second third
       
   617   files--verbose: second
       
   618   files--verbose: 
       
   619   files--verbose: d
       
   620   files--verbose: 
       
   621   files--verbose: c
       
   622   files--verbose: c
       
   623   files--verbose: b
       
   624   files--verbose: a
       
   625   files--debug: fourth second third
       
   626   files--debug: second
       
   627   files--debug: 
       
   628   files--debug: d
       
   629   files--debug: 
       
   630   files--debug: c
       
   631   files--debug: c
       
   632   files--debug: b
       
   633   files--debug: a
       
   634   manifest: 6:94961b75a2da
       
   635   manifest: 5:f2dbc354b94e
       
   636   manifest: 4:4dc3def4f9b4
       
   637   manifest: 4:4dc3def4f9b4
       
   638   manifest: 3:cb5a1327723b
       
   639   manifest: 3:cb5a1327723b
       
   640   manifest: 2:6e0e82995c35
       
   641   manifest: 1:4e8d705b1e53
       
   642   manifest: 0:a0c8bcbbb45c
       
   643   manifest--verbose: 6:94961b75a2da
       
   644   manifest--verbose: 5:f2dbc354b94e
       
   645   manifest--verbose: 4:4dc3def4f9b4
       
   646   manifest--verbose: 4:4dc3def4f9b4
       
   647   manifest--verbose: 3:cb5a1327723b
       
   648   manifest--verbose: 3:cb5a1327723b
       
   649   manifest--verbose: 2:6e0e82995c35
       
   650   manifest--verbose: 1:4e8d705b1e53
       
   651   manifest--verbose: 0:a0c8bcbbb45c
       
   652   manifest--debug: 6:94961b75a2da554b4df6fb599e5bfc7d48de0c64
       
   653   manifest--debug: 5:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
       
   654   manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
       
   655   manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
       
   656   manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
       
   657   manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
       
   658   manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
       
   659   manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
       
   660   manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
       
   661   node: 95c24699272ef57d062b8bccc32c878bf841784a
       
   662   node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
       
   663   node: d41e714fe50d9e4a5f11b4d595d543481b5f980b
       
   664   node: 13207e5a10d9fd28ec424934298e176197f2c67f
       
   665   node: bbe44766e73d5f11ed2177f1838de10c53ef3e74
       
   666   node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   667   node: 97054abb4ab824450e9164180baf491ae0078465
       
   668   node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
       
   669   node: 1e4e1b8f71e05681d422154f5421e385fec3454f
       
   670   node--verbose: 95c24699272ef57d062b8bccc32c878bf841784a
       
   671   node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
       
   672   node--verbose: d41e714fe50d9e4a5f11b4d595d543481b5f980b
       
   673   node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
       
   674   node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74
       
   675   node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   676   node--verbose: 97054abb4ab824450e9164180baf491ae0078465
       
   677   node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
       
   678   node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
       
   679   node--debug: 95c24699272ef57d062b8bccc32c878bf841784a
       
   680   node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
       
   681   node--debug: d41e714fe50d9e4a5f11b4d595d543481b5f980b
       
   682   node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
       
   683   node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74
       
   684   node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   685   node--debug: 97054abb4ab824450e9164180baf491ae0078465
       
   686   node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
       
   687   node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
       
   688   parents: 
       
   689   parents: -1:000000000000 
       
   690   parents: 5:13207e5a10d9 4:bbe44766e73d 
       
   691   parents: 3:10e46f2dcbf4 
       
   692   parents: 
       
   693   parents: 
       
   694   parents: 
       
   695   parents: 
       
   696   parents: 
       
   697   parents--verbose: 
       
   698   parents--verbose: -1:000000000000 
       
   699   parents--verbose: 5:13207e5a10d9 4:bbe44766e73d 
       
   700   parents--verbose: 3:10e46f2dcbf4 
       
   701   parents--verbose: 
       
   702   parents--verbose: 
       
   703   parents--verbose: 
       
   704   parents--verbose: 
       
   705   parents--verbose: 
       
   706   parents--debug: 7:29114dbae42b9f078cf2714dbe3a86bba8ec7453 -1:0000000000000000000000000000000000000000 
       
   707   parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
       
   708   parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:bbe44766e73d5f11ed2177f1838de10c53ef3e74 
       
   709   parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
       
   710   parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
       
   711   parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000 
       
   712   parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000 
       
   713   parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000 
       
   714   parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
       
   715   rev: 8
       
   716   rev: 7
       
   717   rev: 6
       
   718   rev: 5
       
   719   rev: 4
       
   720   rev: 3
       
   721   rev: 2
       
   722   rev: 1
       
   723   rev: 0
       
   724   rev--verbose: 8
       
   725   rev--verbose: 7
       
   726   rev--verbose: 6
       
   727   rev--verbose: 5
       
   728   rev--verbose: 4
       
   729   rev--verbose: 3
       
   730   rev--verbose: 2
       
   731   rev--verbose: 1
       
   732   rev--verbose: 0
       
   733   rev--debug: 8
       
   734   rev--debug: 7
       
   735   rev--debug: 6
       
   736   rev--debug: 5
       
   737   rev--debug: 4
       
   738   rev--debug: 3
       
   739   rev--debug: 2
       
   740   rev--debug: 1
       
   741   rev--debug: 0
       
   742   tags: tip
       
   743   tags: 
       
   744   tags: 
       
   745   tags: 
       
   746   tags: 
       
   747   tags: 
       
   748   tags: 
       
   749   tags: 
       
   750   tags: 
       
   751   tags--verbose: tip
       
   752   tags--verbose: 
       
   753   tags--verbose: 
       
   754   tags--verbose: 
       
   755   tags--verbose: 
       
   756   tags--verbose: 
       
   757   tags--verbose: 
       
   758   tags--verbose: 
       
   759   tags--verbose: 
       
   760   tags--debug: tip
       
   761   tags--debug: 
       
   762   tags--debug: 
       
   763   tags--debug: 
       
   764   tags--debug: 
       
   765   tags--debug: 
       
   766   tags--debug: 
       
   767   tags--debug: 
       
   768   tags--debug: 
       
   769   diffstat: 3: +2/-1
       
   770   diffstat: 1: +1/-0
       
   771   diffstat: 0: +0/-0
       
   772   diffstat: 1: +1/-0
       
   773   diffstat: 0: +0/-0
       
   774   diffstat: 1: +1/-0
       
   775   diffstat: 1: +4/-0
       
   776   diffstat: 1: +2/-0
       
   777   diffstat: 1: +1/-0
       
   778   diffstat--verbose: 3: +2/-1
       
   779   diffstat--verbose: 1: +1/-0
       
   780   diffstat--verbose: 0: +0/-0
       
   781   diffstat--verbose: 1: +1/-0
       
   782   diffstat--verbose: 0: +0/-0
       
   783   diffstat--verbose: 1: +1/-0
       
   784   diffstat--verbose: 1: +4/-0
       
   785   diffstat--verbose: 1: +2/-0
       
   786   diffstat--verbose: 1: +1/-0
       
   787   diffstat--debug: 3: +2/-1
       
   788   diffstat--debug: 1: +1/-0
       
   789   diffstat--debug: 0: +0/-0
       
   790   diffstat--debug: 1: +1/-0
       
   791   diffstat--debug: 0: +0/-0
       
   792   diffstat--debug: 1: +1/-0
       
   793   diffstat--debug: 1: +4/-0
       
   794   diffstat--debug: 1: +2/-0
       
   795   diffstat--debug: 1: +1/-0
       
   796   extras: branch=default
       
   797   extras: branch=default
       
   798   extras: branch=default
       
   799   extras: branch=default
       
   800   extras: branch=foo
       
   801   extras: branch=default
       
   802   extras: branch=default
       
   803   extras: branch=default
       
   804   extras: branch=default
       
   805   extras--verbose: branch=default
       
   806   extras--verbose: branch=default
       
   807   extras--verbose: branch=default
       
   808   extras--verbose: branch=default
       
   809   extras--verbose: branch=foo
       
   810   extras--verbose: branch=default
       
   811   extras--verbose: branch=default
       
   812   extras--verbose: branch=default
       
   813   extras--verbose: branch=default
       
   814   extras--debug: branch=default
       
   815   extras--debug: branch=default
       
   816   extras--debug: branch=default
       
   817   extras--debug: branch=default
       
   818   extras--debug: branch=foo
       
   819   extras--debug: branch=default
       
   820   extras--debug: branch=default
       
   821   extras--debug: branch=default
       
   822   extras--debug: branch=default
       
   823   p1rev: 7
       
   824   p1rev: -1
       
   825   p1rev: 5
       
   826   p1rev: 3
       
   827   p1rev: 3
       
   828   p1rev: 2
       
   829   p1rev: 1
       
   830   p1rev: 0
       
   831   p1rev: -1
       
   832   p1rev--verbose: 7
       
   833   p1rev--verbose: -1
       
   834   p1rev--verbose: 5
       
   835   p1rev--verbose: 3
       
   836   p1rev--verbose: 3
       
   837   p1rev--verbose: 2
       
   838   p1rev--verbose: 1
       
   839   p1rev--verbose: 0
       
   840   p1rev--verbose: -1
       
   841   p1rev--debug: 7
       
   842   p1rev--debug: -1
       
   843   p1rev--debug: 5
       
   844   p1rev--debug: 3
       
   845   p1rev--debug: 3
       
   846   p1rev--debug: 2
       
   847   p1rev--debug: 1
       
   848   p1rev--debug: 0
       
   849   p1rev--debug: -1
       
   850   p2rev: -1
       
   851   p2rev: -1
       
   852   p2rev: 4
       
   853   p2rev: -1
       
   854   p2rev: -1
       
   855   p2rev: -1
       
   856   p2rev: -1
       
   857   p2rev: -1
       
   858   p2rev: -1
       
   859   p2rev--verbose: -1
       
   860   p2rev--verbose: -1
       
   861   p2rev--verbose: 4
       
   862   p2rev--verbose: -1
       
   863   p2rev--verbose: -1
       
   864   p2rev--verbose: -1
       
   865   p2rev--verbose: -1
       
   866   p2rev--verbose: -1
       
   867   p2rev--verbose: -1
       
   868   p2rev--debug: -1
       
   869   p2rev--debug: -1
       
   870   p2rev--debug: 4
       
   871   p2rev--debug: -1
       
   872   p2rev--debug: -1
       
   873   p2rev--debug: -1
       
   874   p2rev--debug: -1
       
   875   p2rev--debug: -1
       
   876   p2rev--debug: -1
       
   877   p1node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
       
   878   p1node: 0000000000000000000000000000000000000000
       
   879   p1node: 13207e5a10d9fd28ec424934298e176197f2c67f
       
   880   p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   881   p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   882   p1node: 97054abb4ab824450e9164180baf491ae0078465
       
   883   p1node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
       
   884   p1node: 1e4e1b8f71e05681d422154f5421e385fec3454f
       
   885   p1node: 0000000000000000000000000000000000000000
       
   886   p1node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
       
   887   p1node--verbose: 0000000000000000000000000000000000000000
       
   888   p1node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
       
   889   p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   890   p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   891   p1node--verbose: 97054abb4ab824450e9164180baf491ae0078465
       
   892   p1node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
       
   893   p1node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
       
   894   p1node--verbose: 0000000000000000000000000000000000000000
       
   895   p1node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
       
   896   p1node--debug: 0000000000000000000000000000000000000000
       
   897   p1node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
       
   898   p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   899   p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
       
   900   p1node--debug: 97054abb4ab824450e9164180baf491ae0078465
       
   901   p1node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
       
   902   p1node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
       
   903   p1node--debug: 0000000000000000000000000000000000000000
       
   904   p2node: 0000000000000000000000000000000000000000
       
   905   p2node: 0000000000000000000000000000000000000000
       
   906   p2node: bbe44766e73d5f11ed2177f1838de10c53ef3e74
       
   907   p2node: 0000000000000000000000000000000000000000
       
   908   p2node: 0000000000000000000000000000000000000000
       
   909   p2node: 0000000000000000000000000000000000000000
       
   910   p2node: 0000000000000000000000000000000000000000
       
   911   p2node: 0000000000000000000000000000000000000000
       
   912   p2node: 0000000000000000000000000000000000000000
       
   913   p2node--verbose: 0000000000000000000000000000000000000000
       
   914   p2node--verbose: 0000000000000000000000000000000000000000
       
   915   p2node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74
       
   916   p2node--verbose: 0000000000000000000000000000000000000000
       
   917   p2node--verbose: 0000000000000000000000000000000000000000
       
   918   p2node--verbose: 0000000000000000000000000000000000000000
       
   919   p2node--verbose: 0000000000000000000000000000000000000000
       
   920   p2node--verbose: 0000000000000000000000000000000000000000
       
   921   p2node--verbose: 0000000000000000000000000000000000000000
       
   922   p2node--debug: 0000000000000000000000000000000000000000
       
   923   p2node--debug: 0000000000000000000000000000000000000000
       
   924   p2node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74
       
   925   p2node--debug: 0000000000000000000000000000000000000000
       
   926   p2node--debug: 0000000000000000000000000000000000000000
       
   927   p2node--debug: 0000000000000000000000000000000000000000
       
   928   p2node--debug: 0000000000000000000000000000000000000000
       
   929   p2node--debug: 0000000000000000000000000000000000000000
       
   930   p2node--debug: 0000000000000000000000000000000000000000
       
   931 
   279 
   932 Add a dummy commit to make up for the instability of the above:
   280 Add a dummy commit to make up for the instability of the above:
   933 
   281 
   934   $ echo a > a
   282   $ echo a > a
   935   $ hg add a
   283   $ hg add a
  1051 
   399 
  1052   $ hg tip --template '{foo()}\n'
   400   $ hg tip --template '{foo()}\n'
  1053   hg: parse error: unknown function 'foo'
   401   hg: parse error: unknown function 'foo'
  1054   [255]
   402   [255]
  1055 
   403 
  1056 Test index keyword:
       
  1057 
       
  1058   $ hg log -l 2 -T '{index + 10}{files % " {index}:{file}"}\n'
       
  1059   10 0:a 1:b 2:fifth 3:fourth 4:third
       
  1060   11 0:a
       
  1061 
       
  1062   $ hg branches -T '{index} {branch}\n'
       
  1063   0 default
       
  1064   1 foo
       
  1065 
       
  1066 ui verbosity:
       
  1067 
       
  1068   $ hg log -l1 -T '{verbosity}\n'
       
  1069   
       
  1070   $ hg log -l1 -T '{verbosity}\n' --debug
       
  1071   debug
       
  1072   $ hg log -l1 -T '{verbosity}\n' --quiet
       
  1073   quiet
       
  1074   $ hg log -l1 -T '{verbosity}\n' --verbose
       
  1075   verbose
       
  1076 
       
  1077   $ cd ..
   404   $ cd ..
  1078 
   405 
  1079 
   406 Set up latesttag repository:
  1080 latesttag:
       
  1081 
   407 
  1082   $ hg init latesttag
   408   $ hg init latesttag
  1083   $ cd latesttag
   409   $ cd latesttag
  1084 
   410 
  1085   $ echo a > file
   411   $ echo a > file
  1103   $ hg ci -m h2e -d '4 0'
   429   $ hg ci -m h2e -d '4 0'
  1104 
   430 
  1105   $ hg merge -q
   431   $ hg merge -q
  1106   $ hg ci -m merge -d '5 -3600'
   432   $ hg ci -m merge -d '5 -3600'
  1107 
   433 
  1108 No tag set:
       
  1109 
       
  1110   $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
  1111   @    5: null+5
       
  1112   |\
       
  1113   | o  4: null+4
       
  1114   | |
       
  1115   | o  3: null+3
       
  1116   | |
       
  1117   o |  2: null+3
       
  1118   |/
       
  1119   o  1: null+2
       
  1120   |
       
  1121   o  0: null+1
       
  1122   
       
  1123 
       
  1124 One common tag: longest path wins for {latesttagdistance}:
       
  1125 
       
  1126   $ hg tag -r 1 -m t1 -d '6 0' t1
   434   $ hg tag -r 1 -m t1 -d '6 0' t1
  1127   $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
  1128   @  6: t1+4
       
  1129   |
       
  1130   o    5: t1+3
       
  1131   |\
       
  1132   | o  4: t1+2
       
  1133   | |
       
  1134   | o  3: t1+1
       
  1135   | |
       
  1136   o |  2: t1+1
       
  1137   |/
       
  1138   o  1: t1+0
       
  1139   |
       
  1140   o  0: null+1
       
  1141   
       
  1142 
       
  1143 One ancestor tag: closest wins:
       
  1144 
       
  1145   $ hg tag -r 2 -m t2 -d '7 0' t2
   435   $ hg tag -r 2 -m t2 -d '7 0' t2
  1146   $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
  1147   @  7: t2+3
       
  1148   |
       
  1149   o  6: t2+2
       
  1150   |
       
  1151   o    5: t2+1
       
  1152   |\
       
  1153   | o  4: t1+2
       
  1154   | |
       
  1155   | o  3: t1+1
       
  1156   | |
       
  1157   o |  2: t2+0
       
  1158   |/
       
  1159   o  1: t1+0
       
  1160   |
       
  1161   o  0: null+1
       
  1162   
       
  1163 
       
  1164 Two branch tags: more recent wins if same number of changes:
       
  1165 
       
  1166   $ hg tag -r 3 -m t3 -d '8 0' t3
   436   $ hg tag -r 3 -m t3 -d '8 0' t3
  1167   $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
  1168   @  8: t3+5
       
  1169   |
       
  1170   o  7: t3+4
       
  1171   |
       
  1172   o  6: t3+3
       
  1173   |
       
  1174   o    5: t3+2
       
  1175   |\
       
  1176   | o  4: t3+1
       
  1177   | |
       
  1178   | o  3: t3+0
       
  1179   | |
       
  1180   o |  2: t2+0
       
  1181   |/
       
  1182   o  1: t1+0
       
  1183   |
       
  1184   o  0: null+1
       
  1185   
       
  1186 
       
  1187 Two branch tags: fewest changes wins:
       
  1188 
       
  1189   $ hg tag -r 4 -m t4 -d '4 0' t4 # older than t2, but should not matter
   437   $ hg tag -r 4 -m t4 -d '4 0' t4 # older than t2, but should not matter
  1190   $ hg log -G --template "{rev}: {latesttag % '{tag}+{distance},{changes} '}\n"
       
  1191   @  9: t4+5,6
       
  1192   |
       
  1193   o  8: t4+4,5
       
  1194   |
       
  1195   o  7: t4+3,4
       
  1196   |
       
  1197   o  6: t4+2,3
       
  1198   |
       
  1199   o    5: t4+1,2
       
  1200   |\
       
  1201   | o  4: t4+0,0
       
  1202   | |
       
  1203   | o  3: t3+0,0
       
  1204   | |
       
  1205   o |  2: t2+0,0
       
  1206   |/
       
  1207   o  1: t1+0,0
       
  1208   |
       
  1209   o  0: null+1,1
       
  1210   
       
  1211 
       
  1212 Merged tag overrides:
       
  1213 
       
  1214   $ hg tag -r 5 -m t5 -d '9 0' t5
   438   $ hg tag -r 5 -m t5 -d '9 0' t5
  1215   $ hg tag -r 3 -m at3 -d '10 0' at3
   439   $ hg tag -r 3 -m at3 -d '10 0' at3
  1216   $ hg log -G --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
  1217   @  11: t5+6
       
  1218   |
       
  1219   o  10: t5+5
       
  1220   |
       
  1221   o  9: t5+4
       
  1222   |
       
  1223   o  8: t5+3
       
  1224   |
       
  1225   o  7: t5+2
       
  1226   |
       
  1227   o  6: t5+1
       
  1228   |
       
  1229   o    5: t5+0
       
  1230   |\
       
  1231   | o  4: t4+0
       
  1232   | |
       
  1233   | o  3: at3:t3+0
       
  1234   | |
       
  1235   o |  2: t2+0
       
  1236   |/
       
  1237   o  1: t1+0
       
  1238   |
       
  1239   o  0: null+1
       
  1240   
       
  1241 
       
  1242   $ hg log -G --template "{rev}: {latesttag % '{tag}+{distance},{changes} '}\n"
       
  1243   @  11: t5+6,6
       
  1244   |
       
  1245   o  10: t5+5,5
       
  1246   |
       
  1247   o  9: t5+4,4
       
  1248   |
       
  1249   o  8: t5+3,3
       
  1250   |
       
  1251   o  7: t5+2,2
       
  1252   |
       
  1253   o  6: t5+1,1
       
  1254   |
       
  1255   o    5: t5+0,0
       
  1256   |\
       
  1257   | o  4: t4+0,0
       
  1258   | |
       
  1259   | o  3: at3+0,0 t3+0,0
       
  1260   | |
       
  1261   o |  2: t2+0,0
       
  1262   |/
       
  1263   o  1: t1+0,0
       
  1264   |
       
  1265   o  0: null+1,1
       
  1266   
       
  1267 
   440 
  1268   $ cd ..
   441   $ cd ..
  1269 
   442 
  1270 Test new-style inline templating:
   443 Test new-style inline templating:
  1271 
   444 
  1723   text.1:wrapped (no-eol)
   896   text.1:wrapped (no-eol)
  1724   $ hg log -l1 -T '{fill(desc, date, "", "")}\n'
   897   $ hg log -l1 -T '{fill(desc, date, "", "")}\n'
  1725   hg: parse error: fill expects an integer width
   898   hg: parse error: fill expects an integer width
  1726   [255]
   899   [255]
  1727 
   900 
  1728   $ COLUMNS=25 hg log -l1 --template '{fill(desc, termwidth, "{node|short}:", "termwidth.{rev}:")}'
       
  1729   bcc7ff960b8e:desc to be
       
  1730   termwidth.1:wrapped desc
       
  1731   termwidth.1:to be wrapped (no-eol)
       
  1732 
       
  1733   $ hg log -l 1 --template '{sub(r"[0-9]", "-", author)}'
   901   $ hg log -l 1 --template '{sub(r"[0-9]", "-", author)}'
  1734   {node|short} (no-eol)
   902   {node|short} (no-eol)
  1735   $ hg log -l 1 --template '{sub(r"[0-9]", "-", "{node|short}")}'
   903   $ hg log -l 1 --template '{sub(r"[0-9]", "-", "{node|short}")}'
  1736   bcc-ff---b-e (no-eol)
   904   bcc-ff---b-e (no-eol)
  1737 
   905 
  1745   > EOF
   913   > EOF
  1746   $ hg log --color=always -l 1 --template '{label(branch, "text\n")}'
   914   $ hg log --color=always -l 1 --template '{label(branch, "text\n")}'
  1747   \x1b[0;31mtext\x1b[0m (esc)
   915   \x1b[0;31mtext\x1b[0m (esc)
  1748   $ hg log --color=always -l 1 --template '{label("text.{rev}", "text\n")}'
   916   $ hg log --color=always -l 1 --template '{label("text.{rev}", "text\n")}'
  1749   \x1b[0;32mtext\x1b[0m (esc)
   917   \x1b[0;32mtext\x1b[0m (esc)
  1750 
       
  1751 Just one more commit:
       
  1752 
       
  1753   $ echo b > b
       
  1754   $ hg ci -qAm b
       
  1755 
       
  1756 Test 'originalnode'
       
  1757 
       
  1758   $ hg log -r 1 -T '{revset("null") % "{node|short} {originalnode|short}"}\n'
       
  1759   000000000000 bcc7ff960b8e
       
  1760   $ hg log -r 0 -T '{manifest % "{node} {originalnode}"}\n'
       
  1761   a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 f7769ec2ab975ad19684098ad1ffd9b81ecc71a1
       
  1762 
       
  1763 Test active bookmark templating
       
  1764 
       
  1765   $ hg book foo
       
  1766   $ hg book bar
       
  1767   $ hg log --template "{rev} {bookmarks % '{bookmark}{ifeq(bookmark, active, \"*\")} '}\n"
       
  1768   2 bar* foo 
       
  1769   1 
       
  1770   0 
       
  1771   $ hg log --template "{rev} {activebookmark}\n"
       
  1772   2 bar
       
  1773   1 
       
  1774   0 
       
  1775   $ hg bookmarks --inactive bar
       
  1776   $ hg log --template "{rev} {activebookmark}\n"
       
  1777   2 
       
  1778   1 
       
  1779   0 
       
  1780   $ hg book -r1 baz
       
  1781   $ hg log --template "{rev} {join(bookmarks, ' ')}\n"
       
  1782   2 bar foo
       
  1783   1 baz
       
  1784   0 
       
  1785   $ hg log --template "{rev} {ifcontains('foo', bookmarks, 't', 'f')}\n"
       
  1786   2 t
       
  1787   1 f
       
  1788   0 f
       
  1789 
       
  1790 Test namespaces dict
       
  1791 
       
  1792   $ hg --config extensions.revnamesext=$TESTDIR/revnamesext.py log -T '{rev}\n{namespaces % " {namespace} color={colorname} builtin={builtin}\n  {join(names, ",")}\n"}\n'
       
  1793   2
       
  1794    bookmarks color=bookmark builtin=True
       
  1795     bar,foo
       
  1796    tags color=tag builtin=True
       
  1797     tip
       
  1798    branches color=branch builtin=True
       
  1799     text.{rev}
       
  1800    revnames color=revname builtin=False
       
  1801     r2
       
  1802   
       
  1803   1
       
  1804    bookmarks color=bookmark builtin=True
       
  1805     baz
       
  1806    tags color=tag builtin=True
       
  1807     
       
  1808    branches color=branch builtin=True
       
  1809     text.{rev}
       
  1810    revnames color=revname builtin=False
       
  1811     r1
       
  1812   
       
  1813   0
       
  1814    bookmarks color=bookmark builtin=True
       
  1815     
       
  1816    tags color=tag builtin=True
       
  1817     
       
  1818    branches color=branch builtin=True
       
  1819     default
       
  1820    revnames color=revname builtin=False
       
  1821     r0
       
  1822   
       
  1823   $ hg log -r2 -T '{namespaces % "{namespace}: {names}\n"}'
       
  1824   bookmarks: bar foo
       
  1825   tags: tip
       
  1826   branches: text.{rev}
       
  1827   $ hg log -r2 -T '{namespaces % "{namespace}:\n{names % " {name}\n"}"}'
       
  1828   bookmarks:
       
  1829    bar
       
  1830    foo
       
  1831   tags:
       
  1832    tip
       
  1833   branches:
       
  1834    text.{rev}
       
  1835   $ hg log -r2 -T '{get(namespaces, "bookmarks") % "{name}\n"}'
       
  1836   bar
       
  1837   foo
       
  1838   $ hg log -r2 -T '{namespaces.bookmarks % "{bookmark}\n"}'
       
  1839   bar
       
  1840   foo
       
  1841 
   918 
  1842   $ cd ..
   919   $ cd ..
  1843 
   920 
  1844 Test bad template with better error message
   921 Test bad template with better error message
  1845 
   922 
  2004 
  1081 
  2005   $ hg log -r . -T "{custom()}\n" --config customfunc.enabled=true
  1082   $ hg log -r . -T "{custom()}\n" --config customfunc.enabled=true
  2006   custom
  1083   custom
  2007 
  1084 
  2008   $ cd ..
  1085   $ cd ..
  2009 
       
  2010 Test 'graphwidth' in 'hg log' on various topologies. The key here is that the
       
  2011 printed graphwidths 3, 5, 7, etc. should all line up in their respective
       
  2012 columns. We don't care about other aspects of the graph rendering here.
       
  2013 
       
  2014   $ hg init graphwidth
       
  2015   $ cd graphwidth
       
  2016 
       
  2017   $ wrappabletext="a a a a a a a a a a a a"
       
  2018 
       
  2019   $ printf "first\n" > file
       
  2020   $ hg add file
       
  2021   $ hg commit -m "$wrappabletext"
       
  2022 
       
  2023   $ printf "first\nsecond\n" > file
       
  2024   $ hg commit -m "$wrappabletext"
       
  2025 
       
  2026   $ hg checkout 0
       
  2027   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  2028   $ printf "third\nfirst\n" > file
       
  2029   $ hg commit -m "$wrappabletext"
       
  2030   created new head
       
  2031 
       
  2032   $ hg merge
       
  2033   merging file
       
  2034   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
       
  2035   (branch merge, don't forget to commit)
       
  2036 
       
  2037   $ hg log --graph -T "{graphwidth}"
       
  2038   @  3
       
  2039   |
       
  2040   | @  5
       
  2041   |/
       
  2042   o  3
       
  2043   
       
  2044   $ hg commit -m "$wrappabletext"
       
  2045 
       
  2046   $ hg log --graph -T "{graphwidth}"
       
  2047   @    5
       
  2048   |\
       
  2049   | o  5
       
  2050   | |
       
  2051   o |  5
       
  2052   |/
       
  2053   o  3
       
  2054   
       
  2055 
       
  2056   $ hg checkout 0
       
  2057   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  2058   $ printf "third\nfirst\nsecond\n" > file
       
  2059   $ hg commit -m "$wrappabletext"
       
  2060   created new head
       
  2061 
       
  2062   $ hg log --graph -T "{graphwidth}"
       
  2063   @  3
       
  2064   |
       
  2065   | o    7
       
  2066   | |\
       
  2067   +---o  7
       
  2068   | |
       
  2069   | o  5
       
  2070   |/
       
  2071   o  3
       
  2072   
       
  2073 
       
  2074   $ hg log --graph -T "{graphwidth}" -r 3
       
  2075   o    5
       
  2076   |\
       
  2077   ~ ~
       
  2078 
       
  2079   $ hg log --graph -T "{graphwidth}" -r 1
       
  2080   o  3
       
  2081   |
       
  2082   ~
       
  2083 
       
  2084   $ hg merge
       
  2085   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  2086   (branch merge, don't forget to commit)
       
  2087   $ hg commit -m "$wrappabletext"
       
  2088 
       
  2089   $ printf "seventh\n" >> file
       
  2090   $ hg commit -m "$wrappabletext"
       
  2091 
       
  2092   $ hg log --graph -T "{graphwidth}"
       
  2093   @  3
       
  2094   |
       
  2095   o    5
       
  2096   |\
       
  2097   | o  5
       
  2098   | |
       
  2099   o |    7
       
  2100   |\ \
       
  2101   | o |  7
       
  2102   | |/
       
  2103   o /  5
       
  2104   |/
       
  2105   o  3
       
  2106   
       
  2107 
       
  2108 The point of graphwidth is to allow wrapping that accounts for the space taken
       
  2109 by the graph.
       
  2110 
       
  2111   $ COLUMNS=10 hg log --graph -T "{fill(desc, termwidth - graphwidth)}"
       
  2112   @  a a a a
       
  2113   |  a a a a
       
  2114   |  a a a a
       
  2115   o    a a a
       
  2116   |\   a a a
       
  2117   | |  a a a
       
  2118   | |  a a a
       
  2119   | o  a a a
       
  2120   | |  a a a
       
  2121   | |  a a a
       
  2122   | |  a a a
       
  2123   o |    a a
       
  2124   |\ \   a a
       
  2125   | | |  a a
       
  2126   | | |  a a
       
  2127   | | |  a a
       
  2128   | | |  a a
       
  2129   | o |  a a
       
  2130   | |/   a a
       
  2131   | |    a a
       
  2132   | |    a a
       
  2133   | |    a a
       
  2134   | |    a a
       
  2135   o |  a a a
       
  2136   |/   a a a
       
  2137   |    a a a
       
  2138   |    a a a
       
  2139   o  a a a a
       
  2140      a a a a
       
  2141      a a a a
       
  2142 
       
  2143 Something tricky happens when there are elided nodes; the next drawn row of
       
  2144 edges can be more than one column wider, but the graph width only increases by
       
  2145 one column. The remaining columns are added in between the nodes.
       
  2146 
       
  2147   $ hg log --graph -T "{graphwidth}" -r "0|2|4|5"
       
  2148   o    5
       
  2149   |\
       
  2150   | \
       
  2151   | :\
       
  2152   o : :  7
       
  2153   :/ /
       
  2154   : o  5
       
  2155   :/
       
  2156   o  3
       
  2157   
       
  2158 
       
  2159   $ cd ..
       
  2160