convert/svn: delegate to svn bindings if HTTP probe fails
convert extension tries to guess the remote repository type with HTTP probes.
Unfortunately, it does not handle authentication or HTTPS handshakes, so regular
svn repositories may be excluded. Instead, when a non-404 error is retrieved,
we keep trying with the svn bindings. The drawback is missing svn bindings will
make the conversion to fail even for non-svn targets. This can be avoided with
--source.
#!/bin/sh
echo "% init repo1"
hg init repo1
cd repo1
echo
echo "% add a; ci"
echo "some text" > a
hg add
hg ci -m first
echo
echo "% cat .hg/store/fncache"
cat .hg/store/fncache
echo
echo "% add a.i/b; ci"
mkdir a.i
echo "some other text" > a.i/b
hg add
hg ci -m second
echo
echo "% cat .hg/store/fncache"
cat .hg/store/fncache
echo
echo "% add a.i.hg/c; ci"
mkdir a.i.hg
echo "yet another text" > a.i.hg/c
hg add
hg ci -m third
echo
echo "% cat .hg/store/fncache"
cat .hg/store/fncache
echo
echo "% hg verify"
hg verify
echo
echo "% rm .hg/store/fncache"
rm .hg/store/fncache
echo
echo "% hg verify"
hg verify
# try non store repo encoding
cd ..
echo % non store repo
hg --config format.usestore=False init foo
cd foo
mkdir tst.d
echo foo > tst.d/foo
hg ci -Amfoo
find .hg | sort
cd ..
echo % non fncache repo
hg --config format.usefncache=False init bar
cd bar
mkdir tst.d
echo foo > tst.d/Foo
hg ci -Amfoo
find .hg | sort
exit 0