evolve: make sure user can recover from conflict (issue6053)
we make sure while continuing interrupted evolve it reach to right code
This patch fix the issue6053 which is about falling evolve into unrecoverable
state and this is how it call fall into it:
If after some rewrite operations we reach to a point where resparent for
two content divergent csets is obsolete and we hit a conflict in
relocation, so now if you run `hg evolve --continue` after resolving
the conflict: code execution would check if wdir parent is obsolete
and run solveobswdp() rather than going to continueevolve() part
and there we will hit by a "abort: outstanding uncommitted merge"
And same for `--abort` or `--stop` flags.
Changes in tests reflect the fixed behaviour.
$ . ${TESTDIR}/testlib/pythonpath.sh
$ cat >> $HGRCPATH <<EOF
> [defaults]
> amend=-d "0 0"
> [web]
> push_ssl = false
> allow_push = *
> [phases]
> publish = False
> [experimental]
> bundle2-exp=False # < Mercurial-4.0
> [devel]
> legacy.exchange=bundle1
> [extensions]
> EOF
$ mkcommit() {
> echo "$1" > "$1"
> hg add "$1"
> hg ci -m "add $1"
> }
$ hg init server
Try the multiple ways to setup the extension
$ hg -R server log --config 'extensions.evolve.serveronly='
$ hg -R server log --config "extensions.evolve.serveronly=${SRCDIR}/hgext3rd/evolve/serveronly.py"
$ PYTHONPATH=$HGTEST_ORIG_PYTHONPATH hg -R server log --config "extensions.evolve.serveronly=${SRCDIR}/hgext3rd/evolve/serveronly.py"
setup repo
$ echo "[extensions]" >> ./server/.hg/hgrc
$ echo "evolve.serveronly=" >> ./server/.hg/hgrc
$ hg serve -R server -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log --traceback
$ cat hg.pid >> $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ client
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat ./errors.log
$ echo "[extensions]" >> ./client/.hg/hgrc
$ echo "evolve=" >> ./client/.hg/hgrc
$ cp -r client other
Smoke testing
===============
$ cd client
$ mkcommit 0
$ mkcommit a
$ hg push
pushing to http://localhost:$HGPORT/
searching for changes
abort: remote error:
incompatible Mercurial client; bundle2 required
(see https://www.mercurial-scm.org/wiki/IncompatibleClient)
[255]
$ cat ../errors.log