next: make next command --evolve by default
Before this patch, if we need to evolve to update to the next child,
we were suggesting the user to use --evolve flag. This patch make some
changes to evolve by default in that conditions.
After making next command to evolve by default we have to consider
the following points:
1) If we don't need to evolve while updating to the next child:
a) And if wdir is dirty, we suggest to use --merge flag
b) if wdir is clean, we simply update to next child (if ambiguous,
prompt the user to select one)
2) If we need to evolve:
a) when wdir is dirty, we suggest the user to use `hg shelve` first,
to make wdir clean. As we don't support --merge while evovling.
b) when wdir is clean, we evolve the next cset.
Changes made in test-prev-next.t reflect the changed behaviour.
$ cat >> $HGRCPATH <<EOF
> [defaults]
> amend=-d "0 0"
> [web]
> push_ssl = false
> allow_push = *
> [phases]
> publish = False
> [alias]
> qlog = log --template='{rev} - {node|short} {desc} ({phase})\n'
> [diff]
> git = 1
> unified = 0
> [extensions]
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
$ mkcommit() {
> echo "$1" >> "$1"
> hg add "$1"
> hg ci -m "add $1"
> }
$ hg init local
$ hg init other
$ cd local
$ touch 1 2 3 4 5 6 7 8 9 0
$ hg add 1 2 3 4 5 6 7 8 9 0
$ mkcommit A
$ mkcommit B
$ mkcommit C
$ hg log -G
@ changeset: 2:829b19580856
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add C
|
o changeset: 1:97b8f02ab29e
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add B
|
o changeset: 0:5d8dabd3961b
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add A
$ hg push ../other
pushing to ../other
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 13 changes to 13 files
$ hg -R ../other verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
checked 3 changesets with 13 changes to 13 files
$ mkcommit D
$ mkcommit E
$ hg up -q .^^
$ hg revert -r tip -a -q
$ hg ci -m 'coin' -q
$ hg log -G
@ changeset: 5:8313a6afebbb
| tag: tip
| parent: 2:829b19580856
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: coin
|
| o changeset: 4:076ec8ade1ac
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: add E
| |
| o changeset: 3:824d9bb109f6
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add D
|
o changeset: 2:829b19580856
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add C
|
o changeset: 1:97b8f02ab29e
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add B
|
o changeset: 0:5d8dabd3961b
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add A
$ hg prune --fold -n -1 -- -2 -3
2 changesets pruned
$ hg push ../other
pushing to ../other
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
2 new obsolescence markers
$ hg -R ../other verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
checked 4 changesets with 15 changes to 15 files