changeset 23440:57d35d3c1cf1 stable

rebase: ignore negative state when updating back to original wc parent The state mapping also contains some magic negative values (detached parent, ignored revision). Blindly reading the state thus lead to unfortunate usage of the negative value as an update destination. We now filter them out. We do a minor alteration of the test to catch this.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 02 Dec 2014 11:06:38 -0800
parents 2b1ffaaab01f
children fc76f55705eb 689540e6007e
files hgext/rebase.py tests/test-rebase-scenario-global.t
diffstat 2 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/rebase.py	Mon Dec 01 18:51:10 2014 -0600
+++ b/hgext/rebase.py	Tue Dec 02 11:06:38 2014 -0800
@@ -449,6 +449,9 @@
         # restore original working directory
         # (we do this before stripping)
         newwd = state.get(originalwd, originalwd)
+        if newwd < 0:
+            # original directory is a parent of rebase set root or ignored
+            newwd = originalwd
         if newwd not in [c.rev() for c in repo[None].parents()]:
             ui.note(_("update back to initial working directory parent\n"))
             hg.updaterepo(repo, newwd, False)
--- a/tests/test-rebase-scenario-global.t	Mon Dec 01 18:51:10 2014 -0600
+++ b/tests/test-rebase-scenario-global.t	Tue Dec 02 11:06:38 2014 -0800
@@ -300,8 +300,12 @@
 
 Check rebasing mutable changeset
 Source phase greater or equal to destination phase: new changeset get the phase of source:
+  $ hg id -n
+  5
   $ hg rebase -s9 -d0
   saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2b23e52411f4-backup.hg (glob)
+  $ hg id -n # check we updated back to parent
+  5
   $ hg log --template "{phase}\n" -r 9
   draft
   $ hg rebase -s9 -d1