bookmarks: don't allow pushing new head for existing mark with -B (
issue4400)
--- a/mercurial/discovery.py Tue Oct 20 18:46:00 2015 -0400
+++ b/mercurial/discovery.py Wed Oct 21 16:21:27 2015 -0500
@@ -279,7 +279,7 @@
if bookmarks.validdest(repo, rctx, lctx):
bookmarkedheads.add(lctx.node())
else:
- if bm in newbookmarks:
+ if bm in newbookmarks and bm not in remotebookmarks:
bookmarkedheads.add(repo[bm].node())
# 3. Check for new heads.
--- a/tests/test-bookmarks-pushpull.t Tue Oct 20 18:46:00 2015 -0400
+++ b/tests/test-bookmarks-pushpull.t Wed Oct 21 16:21:27 2015 -0500
@@ -678,6 +678,26 @@
$ hg -R ../b id -r W
cc978a373a53 tip W
+pushing an existing but divergent bookmark with -B still requires -f
+
+ $ hg clone -q . r
+ $ hg up -q X
+ $ echo 1 > f2
+ $ hg ci -qAml
+
+ $ cd r
+ $ hg up -q X
+ $ echo 2 > f2
+ $ hg ci -qAmr
+ $ hg push -B X
+ pushing to $TESTTMP/addmarks (glob)
+ searching for changes
+ remote has heads on branch 'default' that are not known locally: a2a606d9ff1b
+ abort: push creates new remote head 54694f811df9 with bookmark 'X'!
+ (pull and merge or see "hg help push" for details about pushing new heads)
+ [255]
+ $ cd ..
+
Check summary output for incoming/outgoing bookmarks
$ hg bookmarks -d X