Patchwork [1,of,2] bookmarks: allow (re-)activating a bookmark on the current changeset

login
register
mail settings
Submitter Kevin Bullock
Date March 17, 2013, 3:56 a.m.
Message ID <99b78269a2ec850359fb.1363492578@slower-than-infinity.lan>
Download mbox | patch
Permalink /patch/1134/
State Accepted
Commit 99b78269a2ec850359fb7de8aca385008924a0ab
Headers show

Comments

Kevin Bullock - March 17, 2013, 3:56 a.m.
# HG changeset patch
# User Kevin Bullock <kbullock@ringworld.org>
# Date 1363487804 18000
# Node ID 99b78269a2ec850359fb7de8aca385008924a0ab
# Parent  b616c9b8001d8377c39bc6bc1fd595de56f263f2
bookmarks: allow (re-)activating a bookmark on the current changeset

Allow a bookmark that points to the current changeset to be made the
active bookmark without requiring --force. Previously, this would've
aborted with:

  abort: bookmark 'Z' already exists (use -f to force)
Bryan O'Sullivan - March 18, 2013, 8:48 p.m.
On Sat, Mar 16, 2013 at 8:59 PM, Kevin Bullock <
kbullock+mercurial@ringworld.org> wrote:

> This is a re-send, the only difference being that I moved the test further
> down a bit so that I could add the test for the following patch a bit more
> easily.
>

Looks reasonable.

Patch

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -811,6 +811,9 @@  def bookmark(ui, repo, mark=None, rev=No
     def checkconflict(repo, mark, force=False, target=None):
         if mark in marks and not force:
             if target:
+                if marks[mark] == target and target == cur:
+                    # re-activating a bookmark
+                    return
                 anc = repo.changelog.ancestors([repo[target].rev()])
                 bmctx = repo[marks[mark]]
                 if bmctx.rev() in anc:
diff --git a/tests/test-bookmarks.t b/tests/test-bookmarks.t
--- a/tests/test-bookmarks.t
+++ b/tests/test-bookmarks.t
@@ -363,6 +363,11 @@  test rollback
    * Z                         2:db815d6d32e6
      x  y                      2:db815d6d32e6
 
+activate bookmark on working dir parent without --force
+
+  $ hg bookmark --inactive Z
+  $ hg bookmark Z
+
 test clone
 
   $ hg bookmark -r 2 -i @