resolve: when resolve.mark-check=abort, downgrade to warning if pats specified
Previously, with --config resolve.mark-check=abort, running `hg resolve -m foo`
would abort and emit a message saying to use --all. This command does not work,
though: `hg resolve -m foo --all`, and it's really weird for --all to be the
"--force" flag.
My original goal with the option was to make it so that `hg resolve -m` (no
filename arguments) was safer, which is why --all is used; in my mind, `hg
resolve -m foo` should always mark it as resolved, and `--all` is how you
specify "all the files", so that's why I chose `hg resolve -m --all` as the way
out of `hg resolve -m` aborting. This commit makes all of this work the way it
was meant to in my head :)
Differential Revision: https://phab.mercurial-scm.org/D5218
$ hg init outer
$ cd outer
$ echo '[paths]' >> .hg/hgrc
$ echo 'default = http://example.net/' >> .hg/hgrc
hg debugsub with no remapping
$ echo 'sub = libfoo' > .hgsub
$ hg add .hgsub
$ hg debugsub
path sub
source libfoo
revision
hg debugsub with remapping
$ echo '[subpaths]' >> .hg/hgrc
$ printf 'http://example.net/lib(.*) = C:\\libs\\\\1-lib\\\n' >> .hg/hgrc
$ hg debugsub
path sub
source C:\libs\foo-lib\
revision
test cumulative remapping, the $HGRCPATH file is loaded first
$ echo '[subpaths]' >> $HGRCPATH
$ echo 'libfoo = libbar' >> $HGRCPATH
$ hg debugsub
path sub
source C:\libs\bar-lib\
revision
test absolute source path -- testing with a URL is important since
standard os.path.join wont treat that as an absolute path
$ echo 'abs = http://example.net/abs' > .hgsub
$ hg debugsub
path abs
source http://example.net/abs
revision
$ echo 'abs = /abs' > .hgsub
$ hg debugsub
path abs
source /abs
revision
test bad subpaths pattern
$ cat > .hg/hgrc <<EOF
> [subpaths]
> .* = \1
> EOF
$ hg debugsub
abort: bad subrepository pattern in $TESTTMP/outer/.hg/hgrc:2: invalid group reference* (glob)
[255]
$ cd ..