# HG changeset patch # User Matt Mackall # Date 1176745050 18000 # Node ID 10edaed7f909c9b7ba1c5844e93ebf217746c8c5 # Parent 69109aa0cddd3d245368c6af1f1a40f05714820a# Parent c3c53eb4461176588d75feed7beae1b7ed589957 Merge with stable diff -r 69109aa0cddd -r 10edaed7f909 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Mon Apr 16 09:52:37 2007 -0500 +++ b/mercurial/cmdutil.py Mon Apr 16 12:37:30 2007 -0500 @@ -225,7 +225,7 @@ return 1 return 0 - def show(self, rev=0, changenode=None, copies=None, **props): + def show(self, rev=0, changenode=None, copies=(), **props): if self.buffered: self.ui.pushbuffer() self._show(rev, changenode, copies, props) @@ -321,10 +321,14 @@ def __init__(self, ui, repo, patch, mapfile, buffered): changeset_printer.__init__(self, ui, repo, patch, buffered) - self.t = templater.templater(mapfile, templater.common_filters, - cache={'parent': '{rev}:{node|short} ', - 'manifest': '{rev}:{node|short}', - 'filecopy': '{name} ({source})'}) + filters = templater.common_filters.copy() + filters['formatnode'] = (ui.debugflag and (lambda x: x) + or (lambda x: x[:12])) + self.t = templater.templater(mapfile, filters, + cache={ + 'parent': '{rev}:{node|formatnode} ', + 'manifest': '{rev}:{node|formatnode}', + 'filecopy': '{name} ({source})'}) def use_template(self, t): '''set template string to use''' diff -r 69109aa0cddd -r 10edaed7f909 mercurial/merge.py --- a/mercurial/merge.py Mon Apr 16 09:52:37 2007 -0500 +++ b/mercurial/merge.py Mon Apr 16 12:37:30 2007 -0500 @@ -105,10 +105,15 @@ def findold(fctx): "find files that path was copied from, back to linkrev limit" old = {} + seen = {} orig = fctx.path() visit = [fctx] while visit: fc = visit.pop() + s = str(fc) + if s in seen: + continue + seen[s] = 1 if fc.path() != orig and fc.path() not in old: old[fc.path()] = 1 if fc.rev() < limit: diff -r 69109aa0cddd -r 10edaed7f909 templates/map-cmdline.default --- a/templates/map-cmdline.default Mon Apr 16 09:52:37 2007 -0500 +++ b/templates/map-cmdline.default Mon Apr 16 12:37:30 2007 -0500 @@ -1,4 +1,4 @@ -changeset = 'changeset: {rev}:{node|short}\n{branches}{tags}{short_parents}user: {author}\ndate: {date|date}\nsummary: {desc|firstline}\n\n' +changeset = 'changeset: {rev}:{node|short}\n{branches}{tags}{parents}user: {author}\ndate: {date|date}\nsummary: {desc|firstline}\n\n' changeset_quiet = '{rev}:{node|short}\n' changeset_verbose = 'changeset: {rev}:{node|short}\n{branches}{tags}{parents}{manifest}user: {author}\ndate: {date|date}\n{files}{file_adds}{file_dels}{file_copies}description:\n{desc|strip}\n\n\n' changeset_debug = 'changeset: {rev}:{node}\n{branches}{tags}{parents}{manifest}user: {author}\ndate: {date|date}\n{files}{file_adds}{file_dels}{file_copies}{extras}description:\n{desc|strip}\n\n\n' @@ -14,8 +14,7 @@ start_file_copies = 'copies: ' file_copy = ' {name} ({source})' end_file_copies = '\n' -short_parent = 'parent: {rev}:{node|short}\n' -parent = 'parent: {rev}:{node}\n' +parent = 'parent: {rev}:{node|formatnode}\n' manifest = 'manifest: {rev}:{node}\n' branch = 'branch: {branch}\n' tag = 'tag: {tag}\n' diff -r 69109aa0cddd -r 10edaed7f909 tests/test-command-template --- a/tests/test-command-template Mon Apr 16 09:52:37 2007 -0500 +++ b/tests/test-command-template Mon Apr 16 12:37:30 2007 -0500 @@ -19,6 +19,12 @@ 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 +hg commit -m 'merge' -d '1500001 0' -u 'person' # make sure user/global hgrc does not affect tests echo '[ui]' > .hg/hgrc @@ -39,6 +45,9 @@ hg log --debug --style default > style.out diff log.out style.out +echo '# revision with no copies (used to print a traceback)' +hg tip -v --template '\n' + echo '# compact style works' hg log --style compact hg log -v --style compact @@ -93,6 +102,16 @@ hg log --template '{desc|firstline}\n' hg log --template '{node|short}\n' +echo '# formatnode filter works' +echo '# quiet' +hg -q log -r 0 --template '#node|formatnode#\n' +echo '# normal' +hg log -r 0 --template '#node|formatnode#\n' +echo '# verbose' +hg -v log -r 0 --template '#node|formatnode#\n' +echo '# debug' +hg --debug log -r 0 --template '#node|formatnode#\n' + echo '# error on syntax' echo 'x = "f' >> t hg log diff -r 69109aa0cddd -r 10edaed7f909 tests/test-command-template.out --- a/tests/test-command-template.out Mon Apr 16 09:52:37 2007 -0500 +++ b/tests/test-command-template.out Mon Apr 16 12:37:30 2007 -0500 @@ -2,8 +2,16 @@ # normal # verbose # debug +# revision with no copies (used to print a traceback) + # compact style works -4[tip] 32a18f097fcc 1970-01-17 04:53 +0000 person +6[tip]:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person + merge + +5:3 13207e5a10d9 1970-01-18 08:40 +0000 person + new head + +4 32a18f097fcc 1970-01-17 04:53 +0000 person new branch 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person @@ -18,7 +26,13 @@ 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user line 1 -4[tip] 32a18f097fcc 1970-01-17 04:53 +0000 person +6[tip]:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person + merge + +5:3 13207e5a10d9 1970-01-18 08:40 +0000 person + new head + +4 32a18f097fcc 1970-01-17 04:53 +0000 person new branch 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person @@ -33,7 +47,13 @@ 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user line 1 -4[tip]:3,-1 32a18f097fcc 1970-01-17 04:53 +0000 person +6[tip]:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person + merge + +5:3,-1 13207e5a10d9 1970-01-18 08:40 +0000 person + new head + +4:3,-1 32a18f097fcc 1970-01-17 04:53 +0000 person new branch 3:2,-1 10e46f2dcbf4 1970-01-16 01:06 +0000 person @@ -57,22 +77,35 @@ # error if include fails abort: template file ./q: Permission denied # include works +6 +5 4 3 2 1 0 # ui.style works +6 +5 4 3 2 1 0 # issue338 +1970-01-18 person + + * merge + [c7b487c6c50e] [tip] + + * d: + new head + [13207e5a10d9] + 1970-01-17 person * new branch - [32a18f097fcc] [tip] + [32a18f097fcc] 1970-01-16 person @@ -103,49 +136,69 @@ # keys work author: person author: person +author: person +author: person author: other@place author: A. N. Other author: User Name author--verbose: person author--verbose: person +author--verbose: person +author--verbose: person author--verbose: other@place author--verbose: A. N. Other author--verbose: User Name author--debug: person author--debug: person +author--debug: person +author--debug: person author--debug: other@place author--debug: A. N. Other author--debug: User Name +branches: +branches: branches: foo branches: branches: branches: branches: +branches--verbose: +branches--verbose: branches--verbose: foo branches--verbose: branches--verbose: branches--verbose: branches--verbose: +branches--debug: +branches--debug: branches--debug: foo branches--debug: branches--debug: branches--debug: branches--debug: +date: 1500001.00 +date: 1500000.00 date: 1400000.00 date: 1300000.00 date: 1200000.00 date: 1100000.00 date: 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: 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: merge +desc: new head desc: new branch desc: no user, no domain desc: no person @@ -155,6 +208,8 @@ other 3 desc: line 1 line 2 +desc--verbose: merge +desc--verbose: new head desc--verbose: new branch desc--verbose: no user, no domain desc--verbose: no person @@ -164,6 +219,8 @@ other 3 desc--verbose: line 1 line 2 +desc--debug: merge +desc--debug: new head desc--debug: new branch desc--debug: no user, no domain desc--debug: no person @@ -178,12 +235,18 @@ file_adds: file_adds: file_adds: +file_adds: +file_adds: +file_adds--verbose: +file_adds--verbose: file_adds--verbose: file_adds--verbose: file_adds--verbose: file_adds--verbose: file_adds--verbose: file_adds--debug: +file_adds--debug: d +file_adds--debug: file_adds--debug: file_adds--debug: c file_adds--debug: b @@ -193,27 +256,39 @@ file_dels: file_dels: file_dels: +file_dels: +file_dels: file_dels--verbose: file_dels--verbose: file_dels--verbose: file_dels--verbose: file_dels--verbose: +file_dels--verbose: +file_dels--verbose: +file_dels--debug: +file_dels--debug: file_dels--debug: file_dels--debug: file_dels--debug: file_dels--debug: file_dels--debug: files: +files: d +files: files: c files: c files: b files: a files--verbose: +files--verbose: d +files--verbose: files--verbose: c files--verbose: c files--verbose: b files--verbose: a files--debug: +files--debug: +files--debug: files--debug: c files--debug: files--debug: @@ -223,56 +298,80 @@ manifest: manifest: manifest: +manifest: +manifest: manifest--verbose: manifest--verbose: manifest--verbose: manifest--verbose: manifest--verbose: -manifest--debug: 4:90ae8dda64e1 -manifest--debug: 3:cb5a1327723b -manifest--debug: 2:6e0e82995c35 -manifest--debug: 1:4e8d705b1e53 -manifest--debug: 0:a0c8bcbbb45c +manifest--verbose: +manifest--verbose: +manifest--debug: 6:91015e9dbdd76a6791085d12b0a0ec7fcd22ffbf +manifest--debug: 5:4dc3def4f9b4c6e8de820f6ee74737f91e96a216 +manifest--debug: 4:90ae8dda64e1a876c792bccb9af66284f6018363 +manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc +manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1 +manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55 +manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 +node: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f +node: 13207e5a10d9fd28ec424934298e176197f2c67f node: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4 node: 10e46f2dcbf4823578cf180f33ecf0b957964c47 node: 97054abb4ab824450e9164180baf491ae0078465 node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 node: 1e4e1b8f71e05681d422154f5421e385fec3454f +node--verbose: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f +node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f node--verbose: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4 node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47 node--verbose: 97054abb4ab824450e9164180baf491ae0078465 node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f +node--debug: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f +node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f node--debug: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4 node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47 node--debug: 97054abb4ab824450e9164180baf491ae0078465 node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965 node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f +parents: 5:13207e5a10d9 4:32a18f097fcc +parents: 3:10e46f2dcbf4 parents: parents: parents: parents: parents: +parents--verbose: 5:13207e5a10d9 4:32a18f097fcc +parents--verbose: 3:10e46f2dcbf4 parents--verbose: parents--verbose: parents--verbose: parents--verbose: parents--verbose: -parents--debug: 3:10e46f2dcbf4 -1:000000000000 -parents--debug: 2:97054abb4ab8 -1:000000000000 -parents--debug: 1:b608e9d1a3f0 -1:000000000000 -parents--debug: 0:1e4e1b8f71e0 -1:000000000000 -parents--debug: -1:000000000000 -1:000000000000 +parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:32a18f097fcccf76ef282f62f8a85b3adf8d13c4 +parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 +parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 +parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000 +parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000 +parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000 +parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 +rev: 6 +rev: 5 rev: 4 rev: 3 rev: 2 rev: 1 rev: 0 +rev--verbose: 6 +rev--verbose: 5 rev--verbose: 4 rev--verbose: 3 rev--verbose: 2 rev--verbose: 1 rev--verbose: 0 +rev--debug: 6 +rev--debug: 5 rev--debug: 4 rev--debug: 3 rev--debug: 2 @@ -283,57 +382,88 @@ tags: tags: tags: +tags: +tags: tags--verbose: tip 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: # filters work + + place place hostname person person +person +person other A. N. Other User Name person person +person +person other other user +Sun Jan 18 08:40:01 1970 +0000 +Sun Jan 18 08:40:00 1970 +0000 Sat Jan 17 04:53:20 1970 +0000 Fri Jan 16 01:06:40 1970 +0000 Wed Jan 14 21:20:00 1970 +0000 Tue Jan 13 17:33:20 1970 +0000 Mon Jan 12 13:46:40 1970 +0000 +1970-01-18 08:40 +0000 +1970-01-18 08:40 +0000 1970-01-17 04:53 +0000 1970-01-16 01:06 +0000 1970-01-14 21:20 +0000 1970-01-13 17:33 +0000 1970-01-12 13:46 +0000 +Sun, 18 Jan 1970 08:40:01 +0000 +Sun, 18 Jan 1970 08:40:00 +0000 Sat, 17 Jan 1970 04:53:20 +0000 Fri, 16 Jan 1970 01:06:40 +0000 Wed, 14 Jan 1970 21:20:00 +0000 Tue, 13 Jan 1970 17:33:20 +0000 Mon, 12 Jan 1970 13:46:40 +0000 +merge +new head new branch no user, no domain no person other 1 line 1 +c7b487c6c50e +13207e5a10d9 32a18f097fcc 10e46f2dcbf4 97054abb4ab8 b608e9d1a3f0 1e4e1b8f71e0 +# formatnode filter works +# quiet +1e4e1b8f71e0 +# normal +1e4e1b8f71e0 +# verbose +1e4e1b8f71e0 +# debug +1e4e1b8f71e05681d422154f5421e385fec3454f # error on syntax abort: t:3: unmatched quotes # done