mergestate: determine if active without looking for state files on disk
I couldn't think of a reason that we need to check state files on disk
to determine if a merge is active. I could imagine them being for
there for detecting broken state files that would then be cleaned up
by some later command, but we always delete the entire `.hg/merge/`
tree, so that doesn't seem to be it.
The checks were added in
4e932dc5c113 (resolve: abort when not
applicable (BC), 2014-04-18). Perhaps there were needed for that and
then made obsolete by
6062593d8b06 (resolve: don't abort resolve -l
even when no merge is in progress, 2014-05-23).
The reason I want to delete the checks is that I think `ms =
mergestate.read(repo); ms.active() and ms.local` should be a valid
pattern, but it crashes when the merge state file is an empty file if
we consider mere presence of the file as "active".
Differential Revision: https://phab.mercurial-scm.org/D8118
$ cat >> $HGRCPATH <<EOF
> [extensions]
> drawdag=$TESTDIR/drawdag.py
> bruterebase=$TESTDIR/bruterebase.py
> [experimental]
> evolution.createmarkers=True
> evolution.allowunstable=True
> EOF
$ init() {
> N=`expr ${N:-0} + 1`
> cd $TESTTMP && hg init repo$N && cd repo$N
> hg debugdrawdag
> }
Source looks like "N"
$ init <<'EOS'
> C D
> |\|
> A B Z
> EOS
$ hg debugbruterebase 'all()-Z' Z
A: A':Z
B: B':Z
AB: A':Z B':Z
C: ABORT: cannot rebase 3:a35c07e8a2a4 without moving at least one of its parents
AC: A':Z C':A'B
BC: B':Z C':B'A
ABC: A':Z B':Z C':A'B'
D: D':Z
AD: A':Z D':Z
BD: B':Z D':B'
ABD: A':Z B':Z D':B'
CD: ABORT: cannot rebase 3:a35c07e8a2a4 without moving at least one of its parents
ACD: A':Z C':A'B D':Z
BCD: B':Z C':B'A D':B'
ABCD: A':Z B':Z C':A'B' D':B'
Moving backwards
$ init <<'EOS'
> C
> |\
> A B
> |
> Z
> EOS
$ hg debugbruterebase 'all()-Z' Z
B: B':Z
A:
BA: B':Z
C: ABORT: cannot rebase 3:b8d7149b562b without moving at least one of its parents
BC: B':Z C':B'A
AC:
BAC: B':Z C':B'A