# HG changeset patch # User Sean Farley # Date 2014-01-15 23:48:48 # Node ID 67ee87a371b21d769c9ecd4cf0a1854176664d51 # Parent 95b9c6149e1711d4871772dc819d63252164da25 update: consider successor changesets when moving active bookmark Previously, when an obsolete changeset was bookmarked, successor changesets were not considered when moving the bookmark forward. Now that a bare update will move to the tip most of the successor changesets, we also update the bookmark logic to allow the bookmark to move with this update. Tests have been updated and keep issue4015 covered as well. diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -192,13 +192,12 @@ def update(repo, parents, node): return False if marks[cur] in parents: - old = repo[marks[cur]] new = repo[node] divs = [repo[b] for b in marks if b.split('@', 1)[0] == cur.split('@', 1)[0]] anc = repo.changelog.ancestors([new.rev()]) deletefrom = [b.node() for b in divs if b.rev() in anc or b == new] - if old.descendant(new): + if validdest(repo, repo[marks[cur]], new): marks[cur] = new.node() update = True diff --git a/tests/test-update-branches.t b/tests/test-update-branches.t --- a/tests/test-update-branches.t +++ b/tests/test-update-branches.t @@ -229,13 +229,16 @@ the bookmark (issue4015) $ hg bookmarks * bm 5:ff252e8273df -Test that 4 is detected as the no-argument destination from 3 +Test that 4 is detected as the no-argument destination from 3 and also moves +the bookmark with it $ hg up --quiet 0 # we should be able to update to 3 directly $ hg up --quiet --hidden 3 # but not implemented yet. + $ hg book -f bm $ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg id - d047485b3896+ (b1) + updating bookmark bm + $ hg book + * bm 4:d047485b3896 Test that 5 is detected as a valid destination from 1 $ hg up --quiet 0 # we should be able to update to 3 directly