diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -880,7 +880,7 @@ def bookmark(ui, repo, mark=None, rev=No tgt = scmutil.revsingle(repo, rev).node() checkconflict(repo, mark, force, tgt) marks[mark] = tgt - if not inactive and cur == marks[mark]: + if not inactive and cur == marks[mark] and not rev: bookmarks.setcurrent(repo, mark) elif cur != tgt and mark == repo._bookmarkcurrent: bookmarks.setcurrent(repo, None) diff --git a/tests/test-bookmarks-current.t b/tests/test-bookmarks-current.t --- a/tests/test-bookmarks-current.t +++ b/tests/test-bookmarks-current.t @@ -91,14 +91,19 @@ update to tip $ hg update tip 0 files updated, 0 files merged, 0 files removed, 0 files unresolved -set bookmark Y using -r . +set bookmark Y using -r . but make sure that the active +bookmark is not activated $ hg bookmark -r . Y -list bookmarks +list bookmarks, Y should not be active $ hg bookmark - * Y 0:719295282060 + Y 0:719295282060 + +now, activate Y + + $ hg up -q Y set bookmark Z using -i diff --git a/tests/test-bookmarks-rebase.t b/tests/test-bookmarks-rebase.t --- a/tests/test-bookmarks-rebase.t +++ b/tests/test-bookmarks-rebase.t @@ -26,6 +26,7 @@ initialize repository $ hg bookmark -r 1 one $ hg bookmark -r 3 two + $ hg up -q two bookmark list diff --git a/tests/test-bookmarks.t b/tests/test-bookmarks.t --- a/tests/test-bookmarks.t +++ b/tests/test-bookmarks.t @@ -157,6 +157,7 @@ list bookmarks bookmarks from a revset $ hg bookmark -r '.^1' REVSET $ hg bookmark -r ':tip' TIP + $ hg up -q TIP $ hg bookmarks REVSET 0:f7b1eb17ad24 * TIP 2:db815d6d32e6 @@ -601,8 +602,8 @@ test clearing divergent bookmarks of lin Z 0:f7b1eb17ad24 Z@1 1:925d80f479bb Z@2 2:db815d6d32e6 - * Z@3 3:9ba5f110a0b3 - four 3:9ba5f110a0b3 + Z@3 3:9ba5f110a0b3 + * four 3:9ba5f110a0b3 should-end-on-two 2:db815d6d32e6 $ hg bookmark Z moving bookmark 'Z' forward from f7b1eb17ad24 @@ -620,9 +621,9 @@ test clearing only a single divergent bo $ hg book foo@3 -r 3 $ hg book foo -r foo@3 $ hg book - Z 3:9ba5f110a0b3 + * Z 3:9ba5f110a0b3 Z@1 1:925d80f479bb - * foo 3:9ba5f110a0b3 + foo 3:9ba5f110a0b3 foo@1 0:f7b1eb17ad24 foo@2 2:db815d6d32e6 four 3:9ba5f110a0b3