Mercurial > evolve
view tests/test-evolve-topic.t @ 3577:279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
This patch adds a `--stop` flag for `hg evolve` command. The stop flag lets you
stop the evolution from where you are and let you move to other things if you
want. This fuctionality is great as user can decide to resolve conflicts later
on, stop the command execution, do something else and get back once they has
time or care about resolving them.
As implementation details, it clears the evolvestate, updates to the parent of
working directory clearing the uncommitted changes which also deletes the
mergestate.
A new test file test-evolve-stop.t is added with tests of the new flag added.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Tue, 20 Mar 2018 18:41:31 +0530 |
parents | 2e703ed1c713 |
children | b3d2e0576d4c |
line wrap: on
line source
Check we can find the topic extensions $ cat >> $HGRCPATH <<EOF > [defaults] > amend=-d "0 0" > fold=-d "0 0" > [phases] > publish = False > [ui] > logtemplate = {rev} - \{{get(namespaces, "topics")}} {node|short} {desc} ({phase})\n > [diff] > git = 1 > unified = 0 > [extensions] > rebase = > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH $ echo "topic=$(echo $(dirname $TESTDIR))/hgext3rd/topic/" >> $HGRCPATH $ mkcommit() { > echo "$1" > "$1" > hg add "$1" > hg ci -m "add $1" > } Create a simple setup $ hg init repoa $ cd repoa $ mkcommit aaa $ mkcommit bbb $ hg topic foo marked working directory as topic: foo $ mkcommit ccc active topic 'foo' grew its first changeset $ mkcommit ddd $ mkcommit eee $ mkcommit fff $ hg topic bar $ mkcommit ggg active topic 'bar' grew its first changeset $ mkcommit hhh $ mkcommit iii $ mkcommit jjj $ hg log -G @ 9 - {bar} 1d964213b023 add jjj (draft) | o 8 - {bar} fcab990f3261 add iii (draft) | o 7 - {bar} b0c2554835ac add hhh (draft) | o 6 - {bar} c748293f1c1a add ggg (draft) | o 5 - {foo} 6a6b7365c751 add fff (draft) | o 4 - {foo} 3969ab847d9c add eee (draft) | o 3 - {foo} 4e3a154f38c7 add ddd (draft) | o 2 - {foo} cced9bac76e3 add ccc (draft) | o 1 - {} a4dbed0837ea add bbb (draft) | o 0 - {} 199cc73e9a0b add aaa (draft) Test that evolve --all evolve the current topic ----------------------------------------------- make a mess $ hg up foo switching to topic foo 0 files updated, 0 files merged, 4 files removed, 0 files unresolved $ hg topic -l ### topic: foo (?) ### branch: default (?) ### target: default (branch) t4@ add fff (current) t3: add eee t2: add ddd t1: add ccc t0^ add bbb (base) $ hg up 'desc(ddd)' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo ddd >> ddd $ hg amend 6 new orphan changesets $ hg up 'desc(fff)' 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo fff >> fff $ hg amend $ hg log -G @ 11 - {foo} e104f49bab28 add fff (draft) | | o 10 - {foo} d9cacd156ffc add ddd (draft) | | | | * 9 - {bar} 1d964213b023 add jjj (draft) | | | | | * 8 - {bar} fcab990f3261 add iii (draft) | | | | | * 7 - {bar} b0c2554835ac add hhh (draft) | | | | | * 6 - {bar} c748293f1c1a add ggg (draft) | | | +---x 5 - {foo} 6a6b7365c751 add fff (draft) | | * | 4 - {foo} 3969ab847d9c add eee (draft) | | x | 3 - {foo} 4e3a154f38c7 add ddd (draft) |/ o 2 - {foo} cced9bac76e3 add ccc (draft) | o 1 - {} a4dbed0837ea add bbb (draft) | o 0 - {} 199cc73e9a0b add aaa (draft) Run evolve --all $ hg evolve --all move:[4] add eee atop:[10] add ddd move:[11] add fff atop:[12] add eee working directory is now at 070c5573d8f9 $ hg log -G @ 13 - {foo} 070c5573d8f9 add fff (draft) | o 12 - {foo} 42b49017ff90 add eee (draft) | o 10 - {foo} d9cacd156ffc add ddd (draft) | | * 9 - {bar} 1d964213b023 add jjj (draft) | | | * 8 - {bar} fcab990f3261 add iii (draft) | | | * 7 - {bar} b0c2554835ac add hhh (draft) | | | * 6 - {bar} c748293f1c1a add ggg (draft) | | | x 5 - {foo} 6a6b7365c751 add fff (draft) | | | x 4 - {foo} 3969ab847d9c add eee (draft) | | | x 3 - {foo} 4e3a154f38c7 add ddd (draft) |/ o 2 - {foo} cced9bac76e3 add ccc (draft) | o 1 - {} a4dbed0837ea add bbb (draft) | o 0 - {} 199cc73e9a0b add aaa (draft) Test that evolve does not loose topic information ------------------------------------------------- $ hg evolve --rev 'topic(bar)' move:[6] add ggg atop:[13] add fff move:[7] add hhh atop:[14] add ggg move:[8] add iii atop:[15] add hhh move:[9] add jjj atop:[16] add iii working directory is now at 9bf430c106b7 $ hg log -G @ 17 - {bar} 9bf430c106b7 add jjj (draft) | o 16 - {bar} d2dc89c57700 add iii (draft) | o 15 - {bar} 20bc4d02aa62 add hhh (draft) | o 14 - {bar} 16d6f664b17c add ggg (draft) | o 13 - {foo} 070c5573d8f9 add fff (draft) | o 12 - {foo} 42b49017ff90 add eee (draft) | o 10 - {foo} d9cacd156ffc add ddd (draft) | o 2 - {foo} cced9bac76e3 add ccc (draft) | o 1 - {} a4dbed0837ea add bbb (draft) | o 0 - {} 199cc73e9a0b add aaa (draft) Tests next and prev behavior ============================ Basic move are restricted to the current topic $ hg up foo switching to topic foo 0 files updated, 0 files merged, 4 files removed, 0 files unresolved $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [12] add eee $ hg next 1 files updated, 0 files merged, 0 files removed, 0 files unresolved [13] add fff $ hg next no children on topic "foo" do you want --no-topic [1] $ hg next --no-topic switching to topic bar 1 files updated, 0 files merged, 0 files removed, 0 files unresolved [14] add ggg $ hg prev preserving the current topic 'bar' 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [13] add fff $ hg prev no parent in topic "bar" (do you want --no-topic) [1] $ hg prev --no-topic switching to topic foo 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [12] add eee Testing when instability is involved $ hg log -G o 17 - {bar} 9bf430c106b7 add jjj (draft) | o 16 - {bar} d2dc89c57700 add iii (draft) | o 15 - {bar} 20bc4d02aa62 add hhh (draft) | o 14 - {bar} 16d6f664b17c add ggg (draft) | o 13 - {foo} 070c5573d8f9 add fff (draft) | @ 12 - {foo} 42b49017ff90 add eee (draft) | o 10 - {foo} d9cacd156ffc add ddd (draft) | o 2 - {foo} cced9bac76e3 add ccc (draft) | o 1 - {} a4dbed0837ea add bbb (draft) | o 0 - {} 199cc73e9a0b add aaa (draft) $ hg topic -r 070c5573d8f9 bar 4 new orphan changesets changed topic on 1 changes $ hg up 16d6f664b17c switching to topic bar 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg stack ### topic: bar ### target: default (branch) t5$ add jjj (unstable) t4$ add iii (unstable) t3$ add hhh (unstable) t2$ add ggg (current unstable) t1: add fff t0^ add eee (base) $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [18] add fff