Merge with stable
authorMatt Mackall <mpm@selenic.com>
Mon, 16 Apr 2007 12:37:30 -0500
changeset 4355 10edaed7f909
parent 4349 69109aa0cddd (current diff)
parent 4354 c3c53eb44611 (diff)
child 4361 99c853a1408c
Merge with stable
mercurial/cmdutil.py
mercurial/merge.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'''
--- 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:
--- 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'
--- 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
--- 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  <person>
+
+	* merge
+	[c7b487c6c50e] [tip]
+
+	* d:
+	new head
+	[13207e5a10d9]
+
 1970-01-17  person  <person>
 
 	* new branch
-	[32a18f097fcc] [tip]
+	[32a18f097fcc]
 
 1970-01-16  person  <person>
 
@@ -103,49 +136,69 @@
 # keys work
 author: person
 author: person
+author: person
+author: person
 author: other@place
 author: A. N. Other <other@place>
 author: 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: person
 author--debug: person
+author--debug: person
+author--debug: person
 author--debug: other@place
 author--debug: A. N. Other <other@place>
 author--debug: User Name <user@hostname>
+branches: 
+branches: 
 branches: 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