changeset 25101:91c2278c68a3 stable

rebase: check that the bookmark is still valid when restoring (issue4669) After a rebase --abort, we attempt to restore the previously active bookmark. We need to ensure that the bookmark still exists.
author Tony Tung <tonytung@fb.com>
date Thu, 14 May 2015 21:35:06 -0700
parents 8b99e9a8db05
children bb2f543b48b5 36111f98f23d
files hgext/rebase.py tests/test-bookmarks-rebase.t
diffstat 2 files changed, 16 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/rebase.py	Fri May 15 22:32:31 2015 +0900
+++ b/hgext/rebase.py	Thu May 14 21:35:06 2015 -0700
@@ -892,7 +892,7 @@
             # no backup of rebased cset versions needed
             repair.strip(repo.ui, repo, strippoints)
 
-    if activebookmark:
+    if activebookmark and activebookmark in repo._bookmarks:
         bookmarks.setcurrent(repo, activebookmark)
 
     clearstatus(repo)
--- a/tests/test-bookmarks-rebase.t	Fri May 15 22:32:31 2015 +0900
+++ b/tests/test-bookmarks-rebase.t	Thu May 14 21:35:06 2015 -0700
@@ -90,3 +90,18 @@
    * three                     4:dd7c838e8362
      two                       3:42e5ed2cdcf4
 
+after aborted rebase, restoring a bookmark that has been removed should not fail
+
+  $ hg rebase -s three -d two
+  rebasing 4:dd7c838e8362 "4" (tip three)
+  merging d
+  warning: conflicts during merge.
+  merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
+  unresolved conflicts (see hg resolve, then hg rebase --continue)
+  [1]
+  $ hg bookmark -d three
+  $ hg rebase --abort
+  rebase aborted
+  $ hg bookmark
+     one                       1:925d80f479bb
+     two                       3:42e5ed2cdcf4