bookmarks: consider successor changesets when moving bookmark (issue4015) stable
authorSean Farley <sean.michael.farley@gmail.com>
Wed, 06 Nov 2013 19:01:14 -0600
branchstable
changeset 20107 2ca325ea57fa
parent 20106 c33d9217e99d
child 20108 af12f58e2aa0
child 20109 e57c532c3835
child 20139 5246fd4781d8
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.
mercurial/commands.py
tests/test-update-branches.t
--- 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
--- a/tests/test-update-branches.t	Wed Nov 20 22:03:15 2013 +0100
+++ b/tests/test-update-branches.t	Wed Nov 06 19:01:14 2013 -0600
@@ -206,6 +206,7 @@
   |/
   o  0:60829823a42a 0
   
+  $ hg book bm -r 3
   $ hg status
   M foo
 
@@ -218,10 +219,16 @@
   $ hg debugobsolete 6efa171f091b00a3c35edc15d48c52a498929953 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d047485b3896813b2a624e86201983520f003206
 
-Test that 5 is detected as a valid destination from 3
+Test that 5 is detected as a valid destination from 3 and also accepts moving
+the bookmark (issue4015)
+
   $ hg up --quiet --hidden 3
   $ hg up 5
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg book bm
+  moving bookmark 'bm' forward from 6efa171f091b
+  $ hg bookmarks
+   * bm                        5:ff252e8273df
 
 Test that 5 is detected as a valid destination from 1
   $ hg up --quiet 0          # we should be able to update to 3 directly