prune: with active bookmark should stay active
hg prune with an active bookmark was deactivating the bookmark after the prune.
This patch makes sure that if a bookmark was active before a "prune" operation
(except prune -B) then the bookmark stays activate afterwards.
--- a/hgext/evolve.py Mon May 18 13:58:57 2015 -0400
+++ b/hgext/evolve.py Mon May 18 17:24:38 2015 -0700
@@ -1808,8 +1808,20 @@
newnode = newnode.parents()[0]
if newnode.node() != wdp.node():
+ bookactive = bmactive(repo)
+ # Active bookmark that we don't want to delete (with -B option)
+ # we deactivate and move it before the update and reactivate it
+ # after
+ movebookmark = bookactive and not bookmark
+ if movebookmark:
+ bookmarks.deactivate(repo)
+ repo._bookmarks[bookactive] = newnode.node()
+ repo._bookmarks.write()
commands.update(ui, repo, newnode.rev())
ui.status(_('working directory now at %s\n') % newnode)
+ if movebookmark:
+ bookmarks.activate(repo, bookactive)
+
# update bookmarks
if bookmark:
_deletebookmark(ui, marks, bookmark)
--- a/tests/test-prune.t Mon May 18 13:58:57 2015 -0400
+++ b/tests/test-prune.t Mon May 18 17:24:38 2015 -0700
@@ -40,8 +40,9 @@
$ hg prune --user blah --date '1979-12-15' .
1 changesets pruned
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- (leaving bookmark BABAR)
working directory now at 47d2a3944de8
+ $ hg bookmark
+ * BABAR 3:47d2a3944de8
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'user': 'blah'}
@@ -50,6 +51,7 @@
$ hg prune 1
1 changesets pruned
2 new unstable changesets
+ $ hg book -i BABAR
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'user': 'blah'}
7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {1f0dee641bb7258c56bd60e93edfa2405381c41e} (*) {'user': 'test'} (glob)