diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -274,8 +274,12 @@ def rebase(ui, repo, **opts): "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 diff --git a/tests/test-rebase-parameters.t b/tests/test-rebase-parameters.t --- a/tests/test-rebase-parameters.t +++ b/tests/test-rebase-parameters.t @@ -468,3 +468,17 @@ Test --tool parameter: [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 ..