[PATCH] bookmarks: add --only-bookmark option to log

Alexander Solovyov piranha at piranha.org.ua
Sat Dec 6 06:06:13 CST 2008


# HG changeset patch
# User Alexander Solovyov <piranha at piranha.org.ua>
# Date 1228565010 -7200
# Node ID 5739457bd2d8053736b56e5a1bd3c7ed901648c2
# Parent  5f681a143eded72d4bf9b95682ecffc46460da74
bookmarks: add --only-bookmark option to log

diff --git a/hgext/bookmarks.py b/hgext/bookmarks.py
--- a/hgext/bookmarks.py
+++ b/hgext/bookmarks.py
@@ -312,12 +312,27 @@
     setcurrent(repo, rev)
     return res
 
+def bookmarkonlylog(orig, ui, repo, *args, **opts):
+    'Show revisions that are ancestors of given bookmark'
+    if opts.get('only_bookmark'):
+        if opts.get('rev'):
+            raise util.Abort(_("you cannot use --rev and --only-bookmark"
+                               " options simultaneously"))
+        mark = opts['only_bookmark']
+        if not mark in parse(repo):
+            raise util.Abort(_("invalid bookmark name"))
+        opts['rev'] = ['%s:null' % mark]
+    orig(ui, repo, *args, **opts)
+
 def uisetup(ui):
     'Replace push with a decorator to provide --non-bookmarked option'
     entry = extensions.wrapcommand(commands.table, 'push', pushnonbookmarked)
     entry[1].append(('', 'non-bookmarked', None, _("push all heads that are not bookmarked")))
     if ui.configbool('bookmarks', 'track.current'):
         extensions.wrapcommand(commands.table, 'update', updatecurbookmark)
+    entry = extensions.wrapcommand(commands.table, 'log', bookmarkonlylog)
+    entry[1].append(('B', 'only-bookmark', '',
+                     _("show only ancestors of given bookmark")))
 
 cmdtable = {
     "bookmarks":


More information about the Mercurial-devel mailing list