Mercurial > evolve
changeset 284:88a851a54f26
evolve: fix relocate() with removed revision
relocate() was not handling the case where the rebased revision was
discarded and was raising when trying to update the phase of None.
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Tue, 19 Jun 2012 17:57:54 +0200 |
parents | 8d1a8eeb5a84 |
children | 691cb55358b0 |
files | hgext/evolve.py tests/test-stabilize-result.t |
diffstat | 2 files changed, 62 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/evolve.py Tue Jun 19 17:58:49 2012 +0200 +++ b/hgext/evolve.py Tue Jun 19 17:57:54 2012 +0200 @@ -180,11 +180,17 @@ rebase.rebasenode(repo, orig.node(), dest.node(), {node.nullrev: node.nullrev}) nodenew = rebase.concludenode(repo, orig.node(), dest.node(), node.nullid) - phases.retractboundary(repo, destphase, [nodenew]) - repo.addobsolete(nodenew, nodesrc) oldbookmarks = repo.nodebookmarks(nodesrc) - for book in oldbookmarks: - repo._bookmarks[book] = nodenew + if nodenew is not None: + phases.retractboundary(repo, destphase, [nodenew]) + repo.addobsolete(nodenew, nodesrc) + for book in oldbookmarks: + repo._bookmarks[book] = nodenew + else: + repo.addobsolete(node.nullid, nodesrc) + # Behave like rebase, move bookmarks to dest + for book in oldbookmarks: + repo._bookmarks[book] = dest.node() for book in destbookmarks: # restore bookmark that rebase move repo._bookmarks[book] = dest.node() if oldbookmarks or destbookmarks:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-stabilize-result.t Tue Jun 19 17:57:54 2012 +0200 @@ -0,0 +1,52 @@ + $ cat >> $HGRCPATH <<EOF + > [defaults] + > amend=-d "0 0" + > [extensions] + > hgext.rebase= + > hgext.graphlog= + > EOF + $ echo "obsolete=$(echo $(dirname $TESTDIR))/hgext/obsolete.py" >> $HGRCPATH + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH + + $ glog() { + > hg glog --template \ + > '{rev}:{node|short}@{branch}({phase}) bk:[{bookmarks}] {desc|firstline}\n' "$@" + > } + +Test stabilize removing the changeset being stabilized + + $ hg init empty + $ cd empty + $ echo a > a + $ hg ci -Am adda a + $ echo b > b + $ hg ci -Am addb b + $ echo a >> a + $ hg ci -m changea + $ hg bookmark changea + $ hg up 1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo a >> a + $ hg amend -m changea + 1 new unstables changesets + $ hg stabilize -v + move:[2] changea + atop:[4] changea + hg rebase -Dr cce2c55b8965 -d 1447e1c4828d + resolving manifests + $ glog --hidden + @ 4:1447e1c4828d@default(draft) bk:[changea] changea + | + | o 3:41ad4fe8c795@default(secret) bk:[] amends 102a90ea7b4a3361e4082ed620918c261189a36a + | | + | | o 2:cce2c55b8965@default(secret) bk:[] changea + | |/ + | o 1:102a90ea7b4a@default(secret) bk:[] addb + |/ + o 0:07f494440405@default(draft) bk:[] adda + + $ hg debugsuccessors + 102a90ea7b4a 1447e1c4828d + 102a90ea7b4a 41ad4fe8c795 + 41ad4fe8c795 1447e1c4828d + cce2c55b8965 000000000000