[PATCH 2 of 2] bookmarks: Show (merged) in bookmark list for merged revs

David Shilvock davels at telus.net
Sat Nov 8 00:31:32 CST 2008


# HG changeset patch
# User David Shilvock <davels at telus.net>
# Date 1226121800 28800
# Node ID 05cdaad0f56628bbd61a1f5acb0f82e7c184c5ab
# Parent  8920535663e440f478dadd5b29a754966844786d
bookmarks: Show (merged) in bookmark list for merged revs

diff --git a/hgext/bookmarks.py b/hgext/bookmarks.py
--- a/hgext/bookmarks.py
+++ b/hgext/bookmarks.py
@@ -121,11 +121,23 @@ def bookmark(ui, repo, mark=None, rev=No
             ui.status("no bookmarks set\n")
         else:
             for bmark, n in marks.iteritems():
+                suffix = _nodeismerged(repo, n) and '  merged' or ''
                 prefix = (n == cur) and '*' or ' '
-                ui.write(" %s %-25s %d:%s\n" % (
-                    prefix, bmark, repo.changelog.rev(n), hexfn(n)))
+                ui.write(" %s %-25s %d:%s%s\n" % (
+                    prefix, bmark, repo.changelog.rev(n), hexfn(n), suffix))
         return
 
+def _nodeismerged(repo, n):
+    # a node is considered merged if it: (1) has at least 1 child revision and
+    # (2) all it's children are merges
+    childs = repo.changelog.children(n)
+    if len(childs) == 0:
+        return False
+    for c in childs:
+        if repo.changelog.parents(c)[1] == nullid:
+            return False
+    return True
+            
 def _revstostrip(changelog, node):
     srev = changelog.rev(node)
     tostrip = [srev]


More information about the Mercurial-devel mailing list