[PATCH] bookmarks: ability to create/rename/move bookmark and not make it active

Alexander Solovyov alexander at solovyov.net
Sat Dec 11 11:10:21 CST 2010


# HG changeset patch
# User Alexander Solovyov <alexander at solovyov.net>
# Date 1292087335 -3600
# Node ID d3eb61baf6977bea0e6125f6c301c61367552042
# Parent  4a13ca2c21cefc6409072d9f3bd55a1e8d75b6e1
bookmarks: ability to create/rename/move bookmark and not make it active

diff --git a/hgext/bookmarks.py b/hgext/bookmarks.py
--- a/hgext/bookmarks.py
+++ b/hgext/bookmarks.py
@@ -97,7 +97,8 @@ def setcurrent(repo, mark):
         wlock.release()
     repo._bookmarkcurrent = mark
 
-def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False, rename=None):
+def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False,
+             rename=None, noswitch=False):
     '''track a line of development with movable markers
 
     Bookmarks are pointers to certain commits that move when
@@ -127,7 +128,7 @@ def bookmark(ui, repo, mark=None, rev=No
             raise util.Abort(_("new bookmark name required"))
         marks[mark] = marks[rename]
         del marks[rename]
-        if repo._bookmarkcurrent == rename:
+        if repo._bookmarkcurrent == rename and not noswitch:
             setcurrent(repo, mark)
         write(repo)
         return
@@ -137,7 +138,7 @@ def bookmark(ui, repo, mark=None, rev=No
             raise util.Abort(_("bookmark name required"))
         if mark not in marks:
             raise util.Abort(_("a bookmark of this name does not exist"))
-        if mark == repo._bookmarkcurrent:
+        if mark == repo._bookmarkcurrent and not noswitch:
             setcurrent(repo, None)
         del marks[mark]
         write(repo)
@@ -160,7 +161,8 @@ def bookmark(ui, repo, mark=None, rev=No
             marks[mark] = repo.lookup(rev)
         else:
             marks[mark] = repo.changectx('.').node()
-        setcurrent(repo, mark)
+        if not noswitch:
+            setcurrent(repo, mark)
         write(repo)
         return
 
@@ -568,7 +570,8 @@ cmdtable = {
          [('f', 'force', False, _('force')),
           ('r', 'rev', '', _('revision'), _('REV')),
           ('d', 'delete', False, _('delete a given bookmark')),
-          ('m', 'rename', '', _('rename a given bookmark'), _('NAME'))],
+          ('m', 'rename', '', _('rename a given bookmark'), _('NAME')),
+          ('', 'noswitch', False, _("don't switch to given bookmark"))],
          _('hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]')),
 }
 


More information about the Mercurial-devel mailing list