changeset 4842:3cf94964c56b

hg log: Move filtering implicit parents to own method and use it in templater. Extended test repo in test-command-template to contain changeset to test this.
author Thomas Arendsen Hein <thomas@intevation.de>
date Sun, 08 Jul 2007 12:52:08 +0200
parents f3f84d5cd268
children 15efc1d06143
files mercurial/cmdutil.py tests/test-command-template tests/test-command-template.out
diffstat 3 files changed, 91 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -758,14 +758,8 @@ class changeset_printer(object):
 
         hexfunc = self.ui.debugflag and hex or short
 
-        parents = log.parentrevs(rev)
-        if not self.ui.debugflag:
-            if parents[1] == nullrev:
-                if parents[0] >= rev - 1:
-                    parents = []
-                else:
-                    parents = [parents[0]]
-        parents = [(p, hexfunc(log.node(p))) for p in parents]
+        parents = [(p, hexfunc(log.node(p)))
+                   for p in self._meaningful_parentrevs(log, rev)]
 
         self.ui.write(_("changeset:   %d:%s\n") % (rev, hexfunc(changenode)))
 
@@ -823,6 +817,22 @@ class changeset_printer(object):
                        opts=patch.diffopts(self.ui))
             self.ui.write("\n")
 
+    def _meaningful_parentrevs(self, log, rev):
+        """Return list of meaningful (or all if debug) parentrevs for rev.
+
+        For merges (two non-nullrev revisions) both parents are meaningful.
+        Otherwise the first parent revision is considered meaningful if it
+        is not the preceding revision.
+        """
+        parents = log.parentrevs(rev)
+        if not self.ui.debugflag and parents[1] == nullrev:
+            if parents[0] >= rev - 1:
+                parents = []
+            else:
+                parents = [parents[0]]
+        return parents
+
+
 class changeset_templater(changeset_printer):
     '''format changeset information.'''
 
@@ -919,12 +929,8 @@ class changeset_templater(changeset_prin
                 return showlist('branch', [branch], plural='branches', **args)
 
         def showparents(**args):
-            parents = [[('rev', log.rev(p)), ('node', hex(p))]
-                       for p in log.parents(changenode)
-                       if self.ui.debugflag or p != nullid]
-            if (not self.ui.debugflag and len(parents) == 1 and
-                parents[0][0][1] == rev - 1):
-                return
+            parents = [[('rev', p), ('node', hex(log.node(p)))]
+                       for p in self._meaningful_parentrevs(log, rev)]
             return showlist('parent', parents, **args)
 
         def showtags(**args):
--- a/tests/test-command-template
+++ b/tests/test-command-template
@@ -25,6 +25,11 @@ 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'
+# second branch starting at nullrev
+hg update null
+echo second > second
+hg add second
+hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
 
 # make sure user/global hgrc does not affect tests
 echo '[ui]' > .hg/hgrc
--- a/tests/test-command-template.out
+++ b/tests/test-command-template.out
@@ -1,3 +1,4 @@
+0 files updated, 0 files merged, 4 files removed, 0 files unresolved
 # default style is like normal output
 #  normal
 #  verbose
@@ -5,7 +6,10 @@
 # revision with no copies (used to print a traceback)
 
 # compact style works
-6[tip]:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
+7[tip]:-1   29114dbae42b   1970-01-12 13:46 +0000   user
+  second
+
+6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
   merge
 
 5:3   13207e5a10d9   1970-01-18 08:40 +0000   person
@@ -26,7 +30,10 @@ 1   b608e9d1a3f0   1970-01-13 17:33 +000
 0   1e4e1b8f71e0   1970-01-12 13:46 +0000   user
   line 1
 
-6[tip]:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
+7[tip]:-1   29114dbae42b   1970-01-12 13:46 +0000   user
+  second
+
+6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
   merge
 
 5:3   13207e5a10d9   1970-01-18 08:40 +0000   person
@@ -47,7 +54,10 @@ 1   b608e9d1a3f0   1970-01-13 17:33 +000
 0   1e4e1b8f71e0   1970-01-12 13:46 +0000   user
   line 1
 
-6[tip]:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
+7[tip]:-1,-1   29114dbae42b   1970-01-12 13:46 +0000   user
+  second
+
+6:5,4   c7b487c6c50e   1970-01-18 08:40 +0000   person
   merge
 
 5:3,-1   13207e5a10d9   1970-01-18 08:40 +0000   person
@@ -77,6 +87,7 @@ abort: ./t: no key named 'changeset'
 # error if include fails
 abort: template file ./q: Permission denied
 # include works
+7
 6
 5
 4
@@ -85,6 +96,7 @@ 2
 1
 0
 # ui.style works
+7
 6
 5
 4
@@ -93,10 +105,16 @@ 2
 1
 0
 # issue338
+1970-01-12  User Name  <user@hostname>
+
+	* second:
+	second
+	[29114dbae42b] [tip]
+
 1970-01-18  person  <person>
 
 	* merge
-	[c7b487c6c50e] [tip]
+	[c7b487c6c50e]
 
 	* d:
 	new head
@@ -134,6 +152,7 @@ 1970-01-12  User Name  <user@hostname>
 	[1e4e1b8f71e0]
 
 # keys work
+author: User Name <user@hostname>
 author: person
 author: person
 author: person
@@ -141,6 +160,7 @@ author: person
 author: other@place
 author: A. N. Other <other@place>
 author: User Name <user@hostname>
+author--verbose: User Name <user@hostname>
 author--verbose: person
 author--verbose: person
 author--verbose: person
@@ -148,6 +168,7 @@ author--verbose: person
 author--verbose: other@place
 author--verbose: A. N. Other <other@place>
 author--verbose: User Name <user@hostname>
+author--debug: User Name <user@hostname>
 author--debug: person
 author--debug: person
 author--debug: person
@@ -157,6 +178,7 @@ author--debug: A. N. Other <other@place>
 author--debug: User Name <user@hostname>
 branches: 
 branches: 
+branches: 
 branches: foo
 branches: 
 branches: 
@@ -164,6 +186,7 @@ branches:
 branches: 
 branches--verbose: 
 branches--verbose: 
+branches--verbose: 
 branches--verbose: foo
 branches--verbose: 
 branches--verbose: 
@@ -171,11 +194,13 @@ branches--verbose:
 branches--verbose: 
 branches--debug: 
 branches--debug: 
+branches--debug: 
 branches--debug: foo
 branches--debug: 
 branches--debug: 
 branches--debug: 
 branches--debug: 
+date: 1000000.00
 date: 1500001.00
 date: 1500000.00
 date: 1400000.00
@@ -183,6 +208,7 @@ date: 1300000.00
 date: 1200000.00
 date: 1100000.00
 date: 1000000.00
+date--verbose: 1000000.00
 date--verbose: 1500001.00
 date--verbose: 1500000.00
 date--verbose: 1400000.00
@@ -190,6 +216,7 @@ date--verbose: 1300000.00
 date--verbose: 1200000.00
 date--verbose: 1100000.00
 date--verbose: 1000000.00
+date--debug: 1000000.00
 date--debug: 1500001.00
 date--debug: 1500000.00
 date--debug: 1400000.00
@@ -197,6 +224,7 @@ date--debug: 1300000.00
 date--debug: 1200000.00
 date--debug: 1100000.00
 date--debug: 1000000.00
+desc: second
 desc: merge
 desc: new head
 desc: new branch
@@ -208,6 +236,7 @@ other 2
 other 3
 desc: line 1
 line 2
+desc--verbose: second
 desc--verbose: merge
 desc--verbose: new head
 desc--verbose: new branch
@@ -219,6 +248,7 @@ other 2
 other 3
 desc--verbose: line 1
 line 2
+desc--debug: second
 desc--debug: merge
 desc--debug: new head
 desc--debug: new branch
@@ -237,6 +267,8 @@ file_adds:
 file_adds: 
 file_adds: 
 file_adds: 
+file_adds: 
+file_adds--verbose: 
 file_adds--verbose: 
 file_adds--verbose: 
 file_adds--verbose: 
@@ -244,6 +276,7 @@ file_adds--verbose:
 file_adds--verbose: 
 file_adds--verbose: 
 file_adds--verbose: 
+file_adds--debug: second
 file_adds--debug: 
 file_adds--debug: d
 file_adds--debug: 
@@ -258,6 +291,7 @@ file_dels:
 file_dels: 
 file_dels: 
 file_dels: 
+file_dels: 
 file_dels--verbose: 
 file_dels--verbose: 
 file_dels--verbose: 
@@ -265,6 +299,8 @@ 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: 
@@ -272,6 +308,7 @@ file_dels--debug:
 file_dels--debug: 
 file_dels--debug: 
 file_dels--debug: 
+files: second
 files: 
 files: d
 files: 
@@ -279,6 +316,7 @@ files: c
 files: c
 files: b
 files: a
+files--verbose: second
 files--verbose: 
 files--verbose: d
 files--verbose: 
@@ -289,6 +327,7 @@ files--verbose: a
 files--debug: 
 files--debug: 
 files--debug: 
+files--debug: 
 files--debug: c
 files--debug: 
 files--debug: 
@@ -300,6 +339,7 @@ manifest:
 manifest: 
 manifest: 
 manifest: 
+manifest: 
 manifest--verbose: 
 manifest--verbose: 
 manifest--verbose: 
@@ -307,6 +347,8 @@ manifest--verbose:
 manifest--verbose: 
 manifest--verbose: 
 manifest--verbose: 
+manifest--verbose: 
+manifest--debug: 7:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
 manifest--debug: 6:91015e9dbdd76a6791085d12b0a0ec7fcd22ffbf
 manifest--debug: 5:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
 manifest--debug: 4:90ae8dda64e1a876c792bccb9af66284f6018363
@@ -314,6 +356,7 @@ manifest--debug: 3:cb5a1327723bada42f117
 manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
 manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
 manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
+node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
 node: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
 node: 13207e5a10d9fd28ec424934298e176197f2c67f
 node: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
@@ -321,6 +364,7 @@ node: 10e46f2dcbf4823578cf180f33ecf0b957
 node: 97054abb4ab824450e9164180baf491ae0078465
 node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
 node: 1e4e1b8f71e05681d422154f5421e385fec3454f
+node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
 node--verbose: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
 node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
 node--verbose: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
@@ -328,6 +372,7 @@ node--verbose: 10e46f2dcbf4823578cf180f3
 node--verbose: 97054abb4ab824450e9164180baf491ae0078465
 node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
 node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
+node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
 node--debug: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
 node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
 node--debug: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
@@ -335,6 +380,7 @@ node--debug: 10e46f2dcbf4823578cf180f33e
 node--debug: 97054abb4ab824450e9164180baf491ae0078465
 node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
 node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
+parents: -1:000000000000 
 parents: 5:13207e5a10d9 4:32a18f097fcc 
 parents: 3:10e46f2dcbf4 
 parents: 
@@ -342,6 +388,7 @@ parents:
 parents: 
 parents: 
 parents: 
+parents--verbose: -1:000000000000 
 parents--verbose: 5:13207e5a10d9 4:32a18f097fcc 
 parents--verbose: 3:10e46f2dcbf4 
 parents--verbose: 
@@ -349,6 +396,7 @@ parents--verbose:
 parents--verbose: 
 parents--verbose: 
 parents--verbose: 
+parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
 parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:32a18f097fcccf76ef282f62f8a85b3adf8d13c4 
 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000 
@@ -356,6 +404,7 @@ parents--debug: 2:97054abb4ab824450e9164
 parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000 
 parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000 
 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000 
+rev: 7
 rev: 6
 rev: 5
 rev: 4
@@ -363,6 +412,7 @@ rev: 3
 rev: 2
 rev: 1
 rev: 0
+rev--verbose: 7
 rev--verbose: 6
 rev--verbose: 5
 rev--verbose: 4
@@ -370,6 +420,7 @@ rev--verbose: 3
 rev--verbose: 2
 rev--verbose: 1
 rev--verbose: 0
+rev--debug: 7
 rev--debug: 6
 rev--debug: 5
 rev--debug: 4
@@ -384,6 +435,7 @@ tags:
 tags: 
 tags: 
 tags: 
+tags: 
 tags--verbose: tip
 tags--verbose: 
 tags--verbose: 
@@ -391,6 +443,7 @@ tags--verbose:
 tags--verbose: 
 tags--verbose: 
 tags--verbose: 
+tags--verbose: 
 tags--debug: tip
 tags--debug: 
 tags--debug: 
@@ -398,7 +451,9 @@ tags--debug:
 tags--debug: 
 tags--debug: 
 tags--debug: 
+tags--debug: 
 # filters work
+hostname
 
 
 
@@ -406,6 +461,7 @@ tags--debug:
 place
 place
 hostname
+User Name
 person
 person
 person
@@ -413,6 +469,7 @@ person
 other
 A. N. Other
 User Name
+user
 person
 person
 person
@@ -420,6 +477,7 @@ person
 other
 other
 user
+Mon Jan 12 13:46:40 1970 +0000
 Sun Jan 18 08:40:01 1970 +0000
 Sun Jan 18 08:40:00 1970 +0000
 Sat Jan 17 04:53:20 1970 +0000
@@ -427,6 +485,7 @@ 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-12 13:46 +0000
 1970-01-18 08:40 +0000
 1970-01-18 08:40 +0000
 1970-01-17 04:53 +0000
@@ -434,6 +493,7 @@ 1970-01-16 01:06 +0000
 1970-01-14 21:20 +0000
 1970-01-13 17:33 +0000
 1970-01-12 13:46 +0000
+Mon, 12 Jan 1970 13:46:40 +0000
 Sun, 18 Jan 1970 08:40:01 +0000
 Sun, 18 Jan 1970 08:40:00 +0000
 Sat, 17 Jan 1970 04:53:20 +0000
@@ -441,6 +501,7 @@ 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
+second
 merge
 new head
 new branch
@@ -448,6 +509,7 @@ no user, no domain
 no person
 other 1
 line 1
+29114dbae42b
 c7b487c6c50e
 13207e5a10d9
 32a18f097fcc