diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -485,7 +485,7 @@ def buildstate(repo, dest, src, base, de srcancestors = set(repo.changelog.ancestors(source)) baseancestors = set(repo.changelog.ancestors(commonbase.rev())) detachset = srcancestors - baseancestors - detachset.remove(commonbase.rev()) + detachset.discard(commonbase.rev()) else: if base: cwd = repo[base].rev() diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -98,7 +98,7 @@ class engine(object): v = self._get(mapping, key) if not hasattr(v, '__iter__'): raise SyntaxError(_("error expanding '%s%%%s'") - % (key, format)) + % (key, parsed)) lm = mapping.copy() for i in v: if isinstance(i, dict): diff --git a/tests/test-rebase-detach.t b/tests/test-rebase-detach.t --- a/tests/test-rebase-detach.t +++ b/tests/test-rebase-detach.t @@ -191,3 +191,44 @@ Rebasing C onto E detaching from B and c $ cd .. +Rebasing across null as ancestor + $ hg clone -q -U a a5 + + $ cd a5 + + $ echo x > x + + $ hg add x + + $ hg ci -m "extra branch" + created new head + + $ hg tglog + @ 5: 'extra branch' + + o 4: 'E' + | + | o 3: 'D' + | | + | o 2: 'C' + | | + | o 1: 'B' + |/ + o 0: 'A' + + $ hg rebase --detach -s 1 -d tip + saved backup bundle to $TESTTMP/a5/.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 5: 'D' + | + o 4: 'C' + | + o 3: 'B' + | + o 2: 'extra branch' + + o 1: 'E' + | + o 0: 'A' +