rebase: restore bookmark state on abort
The bookmark state was already being preserved, but it wasn't being
properly restored.
--- a/hgext/rebase.py Sat Apr 04 02:37:43 2015 -0700
+++ b/hgext/rebase.py Mon Apr 13 14:54:02 2015 -0400
@@ -231,7 +231,8 @@
hint = _('use "hg rebase --abort" to clear broken state')
raise util.Abort(msg, hint=hint)
if abortf:
- return abort(repo, originalwd, target, state)
+ return abort(repo, originalwd, target, state,
+ activebookmark=activebookmark)
else:
if srcf and basef:
raise util.Abort(_('cannot specify both a '
@@ -852,8 +853,11 @@
return False
-def abort(repo, originalwd, target, state):
- 'Restore the repository to its original state'
+def abort(repo, originalwd, target, state, activebookmark=None):
+ '''Restore the repository to its original state. Additional args:
+
+ activebookmark: the name of the bookmark that should be active after the
+ restore'''
dstates = [s for s in state.values() if s >= 0]
immutable = [d for d in dstates if not repo[d].mutable()]
cleanup = True
@@ -883,6 +887,9 @@
# no backup of rebased cset versions needed
repair.strip(repo.ui, repo, strippoints)
+ if activebookmark:
+ bookmarks.setcurrent(repo, activebookmark)
+
clearstatus(repo)
repo.ui.warn(_('rebase aborted\n'))
return 0
--- a/tests/test-bookmarks-rebase.t Sat Apr 04 02:37:43 2015 -0700
+++ b/tests/test-bookmarks-rebase.t Mon Apr 13 14:54:02 2015 -0400
@@ -66,3 +66,27 @@
date: Thu Jan 01 00:00:00 1970 +0000
summary: 0
+aborted rebase should restore active bookmark.
+
+ $ hg up 1
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ (leaving bookmark two)
+ $ echo 'e' > d
+ $ hg ci -A -m "4"
+ adding d
+ created new head
+ $ hg bookmark three
+ $ 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 rebase --abort
+ rebase aborted
+ $ hg bookmark
+ one 1:925d80f479bb
+ * three 4:dd7c838e8362
+ two 3:42e5ed2cdcf4
+