mercurial/cmdutil.py
changeset 4825 3cf94964c56b
parent 4824 f3f84d5cd268
child 4836 0e2d0a78f81a
--- a/mercurial/cmdutil.py	Sun Jul 08 10:43:57 2007 +0200
+++ b/mercurial/cmdutil.py	Sun Jul 08 12:52:08 2007 +0200
@@ -758,14 +758,8 @@
 
         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 @@
                        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 @@
                 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):