diff mercurial/commands.py @ 20107:2ca325ea57fa stable

bookmarks: consider successor changesets when moving bookmark (issue4015) Previously, this required -f because we didn't consider obsolete changesets (and their children ... or successors of those children, etc.). We now use obsolete.foreground to calculate acceptable changesets when advancing the bookmark. Test coverage has been added.
author Sean Farley <sean.michael.farley@gmail.com>
date Wed, 06 Nov 2013 19:01:14 -0600
parents 1dee888b22f7
children af12f58e2aa0 aa192af94321
line wrap: on
line diff
--- a/mercurial/commands.py	Wed Nov 20 22:03:15 2013 +0100
+++ b/mercurial/commands.py	Wed Nov 06 19:01:14 2013 -0600
@@ -836,10 +836,12 @@
                     bookmarks.deletedivergent(repo, [target], mark)
                     return
 
+                # consider successor changesets as well
+                foreground = obsolete.foreground(repo, [marks[mark]])
                 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:
+                if bmctx.rev() in anc or target in foreground:
                     ui.status(_("moving bookmark '%s' forward from %s\n") %
                               (mark, short(bmctx.node())))
                     return