diff mercurial/bookmarks.py @ 20281:67ee87a371b2

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.
author Sean Farley <sean.michael.farley@gmail.com>
date Wed, 15 Jan 2014 17:48:48 -0600
parents 0f01d0692bc5
children 58300f61b139
line wrap: on
line diff
--- a/mercurial/bookmarks.py	Wed Jan 15 16:41:18 2014 -0600
+++ b/mercurial/bookmarks.py	Wed Jan 15 17:48:48 2014 -0600
@@ -192,13 +192,12 @@
         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