# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1389263595 -3600 # Node ID 32915143d448f8dadb1f6ea2132f041ec79b2351 # Parent cac35bef8aeeb5e794b920f698af26ff37a5166a prune: update to successor rather than parent when prune '.' diff --git a/README b/README --- a/README +++ b/README @@ -52,6 +52,7 @@ - fix a bug where evolve were creating changeset with 2 parents on windows (fix issues #16, #35 and #42) - adds a --obsolete flag to import (requieres Mercurial 3.0) +- prune: update to successor rather than parent when pruning '.' with -s 3.3.1 -- 2014-04-23 diff --git a/hgext/evolve.py b/hgext/evolve.py --- a/hgext/evolve.py +++ b/hgext/evolve.py @@ -1487,11 +1487,19 @@ # informs that changeset have been pruned ui.status(_('%i changesets pruned\n') % len(precs)) - # update to an unkilled parent + wdp = repo['.'] - newnode = wdp - while newnode.obsolete(): - newnode = newnode.parents()[0] + + if len(sucs) == 1 and len(precs) == 1 and wdp in precs: + # '.' killed, so update to the successor + newnode = sucs[0] + else: + # update to an unkilled parent + newnode = wdp + + while newnode.obsolete(): + newnode = newnode.parents()[0] + if newnode.node() != wdp.node(): commands.update(ui, repo, newnode.rev()) ui.status(_('working directory now at %s\n') % newnode) diff --git a/tests/test-prune.t b/tests/test-prune.t --- a/tests/test-prune.t +++ b/tests/test-prune.t @@ -115,8 +115,12 @@ one old, one new + $ hg up 'desc("add ee")' + 4 files updated, 0 files merged, 4 files removed, 0 files unresolved $ hg prune 'desc("add ee")' -s 'desc("add nE")' 1 changesets pruned + 4 files updated, 0 files merged, 4 files removed, 0 files unresolved + working directory now at 6e8148413dd5 $ hg debugobsolete 9d206ffc875e1bc304590549be293be36821e66c 0 {'date': '314064000 0', 'user': 'blah'} (glob) 7c3bad9141dcb46ff89abf5f61856facd56e476c 0 {'date': '*', 'user': 'test'} (glob) @@ -257,4 +261,3 @@ $ hg id -ir 6:2702dd0c91e7 abort: unknown revision '2702dd0c91e7'! [255] -