# HG changeset patch # User Henrik Stuart # Date 2010-11-20 08:51:56 # Node ID 6c800e7ef2f61a28d6a1febb3a10d4a8725360cf # Parent ea3bada953d38e724cbb9cdc76174249635bc6f2 rebase: support --detach when null is common ancestor 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/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' +