[PATCH 3 of 3 stable] rebase: delete divergent bookmarks on destination (issue3685)
Siddharth Agarwal
sid0 at fb.com
Wed Jan 30 20:16:17 CST 2013
# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1359590912 28800
# Branch stable
# Node ID 084b546f5dfa2a65148621b0b755218f6c163710
# Parent e651b86d041ea96809fad36ee5ba886087ad2f75
rebase: delete divergent bookmarks on destination (issue3685)
Similar to merge, divergent bookmarks are only deleted when the bookmark is on
the destination parent.
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -316,7 +316,7 @@ def rebase(ui, repo, **opts):
clearrebased(ui, repo, state, skipped, collapsedas)
if currentbookmarks:
- updatebookmarks(repo, nstate, currentbookmarks, **opts)
+ updatebookmarks(repo, dest, nstate, currentbookmarks)
clearstatus(repo)
ui.note(_("rebase completed\n"))
@@ -493,13 +493,15 @@ def updatemq(repo, state, skipped, **opt
mq.seriesdirty = True
mq.savedirty()
-def updatebookmarks(repo, nstate, originalbookmarks, **opts):
- 'Move bookmarks to their correct changesets'
+def updatebookmarks(repo, dest, nstate, originalbookmarks):
+ 'Move bookmarks to their correct changesets, and delete divergent ones'
+ destnode = dest.node()
marks = repo._bookmarks
for k, v in originalbookmarks.iteritems():
if v in nstate:
# update the bookmarks for revs that have moved
marks[k] = nstate[v]
+ bookmarks.deletedivergent(repo, [destnode], k)
marks.write()
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
@@ -56,17 +56,35 @@ Move only rebased bookmarks
$ cd a1
$ hg up -q Z
+Test deleting divergent bookmarks from dest (issue3685)
+
+ $ hg book -r 3 Z at diverge
+
+... and also test that bookmarks not on dest or not being moved aren't deleted
+
+ $ hg book -r 3 X at diverge
+ $ hg book -r 0 Y at diverge
+
+ $ hg tglog
+ o 3: 'D' bookmarks: W X at diverge Z at diverge
+ |
+ | @ 2: 'C' bookmarks: Y Z
+ | |
+ | o 1: 'B' bookmarks: X
+ |/
+ o 0: 'A' bookmarks: Y at diverge
+
$ hg rebase -s Y -d 3
saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
$ hg tglog
@ 3: 'C' bookmarks: Y Z
|
- o 2: 'D' bookmarks: W
+ o 2: 'D' bookmarks: W X at diverge
|
| o 1: 'B' bookmarks: X
|/
- o 0: 'A' bookmarks:
+ o 0: 'A' bookmarks: Y at diverge
Keep bookmarks to the correct rebased changeset
More information about the Mercurial-devel
mailing list