rebase: fix rebase with no common ancestors (issue4446) stable 3.2.1
authorDurham Goode <durham@fb.com>
Mon, 10 Nov 2014 10:44:42 -0800
branchstable
changeset 23246 643c58303fb0
parent 23245 d33a90cb2a32
child 23264 e8235dd18a56
child 23266 3480c07fc934
rebase: fix rebase with no common ancestors (issue4446) The new rebase revset didn't check for the case when there are no common ancestors. Now it does. The new behavior should be the same as the pre-3.2 behavior. Added a test.
hgext/rebase.py
tests/test-rebase-parameters.t
--- a/hgext/rebase.py	Thu Nov 06 10:57:13 2014 -0500
+++ b/hgext/rebase.py	Mon Nov 10 10:44:42 2014 -0800
@@ -274,8 +274,12 @@
                                 "can't compute rebase set\n"))
                     return 1
                 commonanc = repo.revs('ancestor(%ld, %d)', base, dest).first()
-                rebaseset = repo.revs('(%d::(%ld) - %d)::',
-                                      commonanc, base, commonanc)
+                if commonanc is not None:
+                    rebaseset = repo.revs('(%d::(%ld) - %d)::',
+                                          commonanc, base, commonanc)
+                else:
+                    rebaseset = []
+
                 if not rebaseset:
                     # transform to list because smartsets are not comparable to
                     # lists. This should be improved to honor lazyness of
--- a/tests/test-rebase-parameters.t	Thu Nov 06 10:57:13 2014 -0500
+++ b/tests/test-rebase-parameters.t	Mon Nov 10 10:44:42 2014 -0800
@@ -468,3 +468,17 @@
   [255]
 
   $ cd ..
+
+No common ancestor
+
+  $ hg init separaterepo
+  $ cd separaterepo
+  $ touch a
+  $ hg commit -Aqm a
+  $ hg up -q null
+  $ touch b
+  $ hg commit -Aqm b
+  $ hg rebase -d 0
+  nothing to rebase from d7486e00c6f1 to 3903775176ed
+  [1]
+  $ cd ..