# HG changeset patch # User Matt Mackall # Date 1445462487 18000 # Node ID ba7eeeac9603077c6759235078297e63ae92078b # Parent c7d30fdb13b229537269030c94c7b2540b6d34a0 bookmarks: don't allow pushing new head for existing mark with -B (issue4400) diff -r c7d30fdb13b2 -r ba7eeeac9603 mercurial/discovery.py --- 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. diff -r c7d30fdb13b2 -r ba7eeeac9603 tests/test-bookmarks-pushpull.t --- 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