Mercurial > evolve
view tests/test-evolve-split.t @ 5206:dc3571a37b56 stable
evolve: support ancestor of orphan split with unrelated changeset in between
This is done by searching for roots and heads within the range delimited on
both sides by the target revs instead of just within the target revs.
Example:
o 5
|
o 4
|
o 3
|
| * 2
| |
| x 1
|/
o 0
1 is obsoleted by 3 and 5. We are considering the case when 2 gets evolved.
Before the change, both roots and heads were [3, 5]. The user was offered a
choice between 3 and 5 as the destination.
After the change, roots are [3] and heads are [5]. 5 is chosen as the
destination.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Wed, 11 Mar 2020 16:04:06 +0100 |
parents | 184c64c81528 |
children | a5876853ba15 |
line wrap: on
line source
Check that evolve shows error while handling split commits -------------------------------------- $ cat >> $HGRCPATH <<EOF > [defaults] > amend=-d "0 0" > fold=-d "0 0" > [web] > push_ssl = false > allow_push = * > [phases] > publish = False > [diff] > git = 1 > unified = 0 > [ui] > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline}\n > [extensions] > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH $ mkcommit() { > echo "$1" > "$1" > hg add "$1" > hg ci -m "add $1" > } $ hg init split $ cd split $ mkcommit aa Create a split commit $ printf "oo" > oo; $ printf "pp" > pp; $ hg add oo pp $ hg commit -m "oo+pp" $ mkcommit uu $ hg up 0 0 files updated, 0 files merged, 3 files removed, 0 files unresolved $ printf "oo" > oo; $ hg add oo $ hg commit -m "_oo" created new head $ printf "pp" > pp; $ hg add pp $ hg commit -m "_pp" $ hg prune --successor "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split 1 changesets pruned 1 new orphan changesets $ hg log -G @ 4:d0dcf24cddd3@default(draft) _pp | o 3:a7fdfda64c08@default(draft) _oo | | * 2:f52200b086ca@default(draft) add uu | | | x 1:d55647aaa0c6@default(draft) oo+pp |/ o 0:58663bb03074@default(draft) add aa $ hg evolve --rev "0::" move:[2] add uu atop:[4] _pp Split the changeset such that there's an unrelated changeset in between $ hg --config extensions.strip= strip 4 -q $ mkcommit bb $ printf "pp" > pp; $ hg add pp $ hg commit -m "_pp" $ hg prune --successor "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split 1 changesets pruned 1 new orphan changesets $ hg log -G @ 5:e4541785761d@default(draft) _pp | o 4:155f65ab6abc@default(draft) add bb | o 3:a7fdfda64c08@default(draft) _oo | | * 2:f52200b086ca@default(draft) add uu | | | x 1:d55647aaa0c6@default(draft) oo+pp |/ o 0:58663bb03074@default(draft) add aa $ hg evolve --rev "0::" move:[2] add uu atop:[5] _pp