# HG changeset patch # User Pierre-Yves David # Date 1434068388 25200 # Node ID 847fce27effc3ccf448130591a53ffa232f4d972 # Parent 69e8384a436ce703dba436fd8d6e49a63efe517b bookmark: informs of failure to upgrade a bookmark When we explicitly requested to update a bookmark but the bookmark location was missing locally, we used to silently ignore the case. We now issue a message about it to point that something wrong is going on. By chance, we fixed all the cases where is case happened (for explicit pulling only, issue4700 is still open). But I think it is still valuable to have a warning in place in case such issue is reintroduced. This patch have been tested against issue4689 test (but without issue4689 fix). It give the better but expected failure seen below: > --- /home/pyd/src/mercurial-dev/tests/test-bookmarks-pushpull.t > +++ /home/pyd/src/mercurial-dev/tests/test-bookmarks-pushpull.t.err > @@ -337,12 +337,12 @@ > adding manifests > adding file changes > added 1 changesets with 1 changes to 1 files > - updating bookmark Y > + remote bookmark Y point to locally missing 0d60821d2197 > (run 'hg update' to get a working copy) > $ hg book > * @ 1:0d2164f0ce0d > X 1:0d2164f0ce0d > - Y 5:35d1ef0a8d1b > + Y 4:b0a5eff05604 > Z 1:0d2164f0ce0d > > Update a bookmark right after the initial lookup -r (issue4700) > @@ -387,12 +387,11 @@ > adding manifests > adding file changes > added 1 changesets with 1 changes to 1 files > - updating bookmark Y > (run 'hg update' to get a working copy) > $ hg book > * @ 1:0d2164f0ce0d > X 1:0d2164f0ce0d > - Y 6:0d60821d2197 > + Y 4:b0a5eff05604 > Z 1:0d2164f0ce0d > $ hg -R $TESTTMP/pull-race book > @ 1:0d2164f0ce0d diff -r 69e8384a436c -r 847fce27effc mercurial/bookmarks.py --- a/mercurial/bookmarks.py Thu Jun 11 08:54:24 2015 -0400 +++ b/mercurial/bookmarks.py Thu Jun 11 17:19:48 2015 -0700 @@ -401,6 +401,11 @@ if scid in repo: # add remote bookmarks for changes we already have changed.append((b, bin(scid), status, _("adding remote bookmark %s\n") % (b))) + elif b in explicit: + explicit.remove(b) + ui.warn(_("remote bookmark %s points to locally missing %s\n") + % (b, scid[:12])) + for b, scid, dcid in advsrc: changed.append((b, bin(scid), status, _("updating bookmark %s\n") % (b))) @@ -427,6 +432,11 @@ explicit.discard(b) changed.append((b, bin(scid), status, _("importing bookmark %s\n") % (b))) + for b, scid, dcid in differ: + if b in explicit: + explicit.remove(b) + ui.warn(_("remote bookmark %s points to locally missing %s\n") + % (b, scid[:12])) if changed: tr = trfunc()