Mercurial > hg-stable
changeset 19109:26c51e87e807 stable
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
This patch is a follow-up to 56dd55da2f7d that resolves divergent bookmarks
between the to-be-forwarded bookmark MARK and the new descendant. This
situation can happen when pulling new changesets, updating to the divergent
bookmark, abandoning the previous changesets with strip, and then moving MARK
to MARK@N.
Test coverage is added.
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Wed, 01 May 2013 15:31:39 -0500 |
parents | cb95716da5fe |
children | 741d94aa92e4 |
files | mercurial/commands.py tests/test-bookmarks.t |
diffstat | 2 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Tue Apr 30 09:02:02 2013 +0900 +++ b/mercurial/commands.py Wed May 01 15:31:39 2013 -0500 @@ -816,6 +816,11 @@ return anc = repo.changelog.ancestors([repo[target].rev()]) bmctx = repo[marks[mark]] + divs = [repo[b].node() for b in marks + if b.split('@', 1)[0] == mark.split('@', 1)[0]] + deletefrom = [b for b in divs + if repo[b].rev() in anc or b == target] + bookmarks.deletedivergent(repo, deletefrom, mark) if bmctx.rev() in anc: ui.status(_("moving bookmark '%s' forward from %s\n") % (mark, short(bmctx.node())))
--- a/tests/test-bookmarks.t Tue Apr 30 09:02:02 2013 +0900 +++ b/tests/test-bookmarks.t Wed May 01 15:31:39 2013 -0500 @@ -590,3 +590,24 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: 0 + +test clearing divergent bookmarks of linear ancestors + + $ hg bookmark Z -r 0 + $ hg bookmark Z@1 -r 1 + $ hg bookmark Z@2 -r 2 + $ hg bookmark Z@3 -r 3 + $ hg book + Z 0:f7b1eb17ad24 + Z@1 1:925d80f479bb + Z@2 2:db815d6d32e6 + * Z@3 3:9ba5f110a0b3 + four 3:9ba5f110a0b3 + should-end-on-two 2:db815d6d32e6 + $ hg bookmark Z + moving bookmark 'Z' forward from f7b1eb17ad24 + $ hg book + * Z 3:9ba5f110a0b3 + Z@1 1:925d80f479bb + four 3:9ba5f110a0b3 + should-end-on-two 2:db815d6d32e6