rebase: do not try to reactivate deleted divergent bookmark stable
authorYuya Nishihara <yuya@tcha.org>
Sat, 15 Feb 2014 16:19:19 +0900
branchstable
changeset 20523 f2a0a0e76b4c
parent 20490 4e41b2fe46cc
child 20529 ca970d6acedb
rebase: do not try to reactivate deleted divergent bookmark If the currently active bookmark is divergent one, it may be resolved during rebase. Trying to activate it will raise "KeyError: 'W@diverge'".
hgext/rebase.py
tests/test-rebase-bookmarks.t
--- a/hgext/rebase.py	Thu Feb 13 13:05:09 2014 +0100
+++ b/hgext/rebase.py	Sat Feb 15 16:19:19 2014 +0900
@@ -404,6 +404,9 @@
 
         if currentbookmarks:
             updatebookmarks(repo, targetnode, nstate, currentbookmarks)
+            if activebookmark not in repo._bookmarks:
+                # active bookmark was divergent one and has been deleted
+                activebookmark = None
 
         clearstatus(repo)
         ui.note(_("rebase completed\n"))
--- a/tests/test-rebase-bookmarks.t	Thu Feb 13 13:05:09 2014 +0100
+++ b/tests/test-rebase-bookmarks.t	Sat Feb 15 16:19:19 2014 +0900
@@ -85,6 +85,24 @@
   |/
   o  0: 'A' bookmarks: Y@diverge
   
+Do not try to keep active but deleted divergent bookmark
+
+  $ cd ..
+  $ hg clone -q a a4
+
+  $ cd a4
+  $ hg up -q 2
+  $ hg book W@diverge
+
+  $ hg rebase -s W -d .
+  saved backup bundle to $TESTTMP/a4/.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg bookmarks
+     W                         3:0d3554f74897
+     X                         1:6c81ed0049f8
+     Y                         2:49cb3485fa0c
+     Z                         2:49cb3485fa0c
+
 Keep bookmarks to the correct rebased changeset
 
   $ cd ..