changeset 7483:187a13bd14c6

bookmarks: add --only-bookmark option to log
author Alexander Solovyov <piranha@piranha.org.ua>
date Sat, 06 Dec 2008 14:03:30 +0200
parents 42cb14f20d76
children 167853c7e54a d3b6c6179323
files hgext/bookmarks.py
diffstat 1 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/bookmarks.py	Sat Dec 06 16:15:59 2008 +0100
+++ b/hgext/bookmarks.py	Sat Dec 06 14:03:30 2008 +0200
@@ -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":