changeset 19985:aa80446aacc3

Merge with stable.
author Augie Fackler <raf@durin42.com>
date Wed, 06 Nov 2013 12:53:39 -0500
parents e1317d3e59e1 (current diff) 7d5e7799a29f (diff)
children 8dc6f855f43d
files
diffstat 3 files changed, 46 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/rebase.py	Tue Nov 05 13:25:45 2013 -0500
+++ b/hgext/rebase.py	Wed Nov 06 12:53:39 2013 -0500
@@ -689,7 +689,7 @@
 
 def abort(repo, originalwd, target, state):
     'Restore the repository to its original state'
-    dstates = [s for s in state.values() if s != nullrev]
+    dstates = [s for s in state.values() if s > nullrev]
     immutable = [d for d in dstates if not repo[d].mutable()]
     cleanup = True
     if immutable:
--- a/mercurial/phases.py	Tue Nov 05 13:25:45 2013 -0500
+++ b/mercurial/phases.py	Wed Nov 06 12:53:39 2013 -0500
@@ -185,6 +185,8 @@
         # be replaced without us being notified.
         if rev == nullrev:
             return public
+        if rev < nullrev:
+            raise ValueError(_('cannot lookup negative revision'))
         if self._phaserevs is None or rev >= len(self._phaserevs):
             self._phaserevs = self.getphaserevs(repo, rebuild=True)
         return self._phaserevs[rev]
--- a/tests/test-rebase-abort.t	Tue Nov 05 13:25:45 2013 -0500
+++ b/tests/test-rebase-abort.t	Wed Nov 06 12:53:39 2013 -0500
@@ -181,3 +181,46 @@
   
 
   $ cd ..
+
+rebase abort should not leave working copy in a merge state if tip-1 is public
+(issue4082)
+
+  $ hg init abortpublic
+  $ cd abortpublic
+  $ echo a > a && hg ci -Aqm a
+  $ hg book master
+  $ hg book foo
+  $ echo b > b && hg ci -Aqm b
+  $ hg up -q master
+  $ echo c > c && hg ci -Aqm c
+  $ hg phase -p -r .
+  $ hg up -q foo
+  $ echo C > c && hg ci -Aqm C
+  $ hg log -G --template "{rev} {desc} {bookmarks}"
+  @  3 C foo
+  |
+  | o  2 c master
+  | |
+  o |  1 b
+  |/
+  o  0 a
+  
+
+  $ hg rebase -d master -r foo
+  merging c
+  warning: conflicts during merge.
+  merging c incomplete! (edit conflicts, then use 'hg resolve --mark')
+  unresolved conflicts (see hg resolve, then hg rebase --continue)
+  [1]
+  $ hg rebase --abort
+  rebase aborted
+  $ hg log -G --template "{rev} {desc} {bookmarks}"
+  @  3 C foo
+  |
+  | o  2 c master
+  | |
+  o |  1 b
+  |/
+  o  0 a
+  
+  $ cd ..