[PATCH STABLE] rebase: do not try to reactivate deleted divergent bookmark

Yuya Nishihara yuya at tcha.org
Sat Feb 15 01:57:53 CST 2014


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1392448759 -32400
#      Sat Feb 15 16:19:19 2014 +0900
# Branch stable
# Node ID f2a0a0e76b4cff445c504db68f04582843cd1c72
# Parent  4e41b2fe46ccfb9722e51e23902f7019d286b15d
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 at diverge'".

diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -404,6 +404,9 @@ def rebase(ui, repo, **opts):
 
         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"))
diff --git a/tests/test-rebase-bookmarks.t b/tests/test-rebase-bookmarks.t
--- a/tests/test-rebase-bookmarks.t
+++ b/tests/test-rebase-bookmarks.t
@@ -85,6 +85,24 @@ Test deleting divergent bookmarks from d
   |/
   o  0: 'A' bookmarks: Y at 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 at 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 ..


More information about the Mercurial-devel mailing list