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 "[extensions]" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH
BASE=`pwd`
addcommit () {
echo $1 > $1
hg add $1
hg commit -d "${2} 0" -m $1
}
commit () {
hg commit -d "${2} 0" -m $1
}
createrepo () {
cd $BASE
rm -rf a
hg init a
cd a
addcommit "A" 0
addcommit "B" 1
echo "C" >> A
commit "C" 2
hg update -C 0
echo "D" >> A
commit "D" 3
addcommit "E" 4
}
echo "% Changes during an interruption - continue"
createrepo > /dev/null 2>&1
hg glog --template '{rev}: {desc}\n'
echo
echo "% - Rebasing B onto E"
hg rebase -s 1 -d 4 2>&1 | sed 's/\(saving bundle to \).*/\1/'
echo
echo "% - Force a commit on C during the interruption"
hg update -C 2
addcommit "Extra" 5
hg glog --template '{rev}: {desc}\n'
echo
echo "% - Resume the rebasing"
hg rebase --continue
echo
echo "% - Solve the conflict and go on"
echo 'conflict solved' > A
rm A.orig
hg resolve -m A
hg rebase --continue
hg glog --template '{rev}: {desc}\n'
echo
echo
echo "% Changes during an interruption - abort"
createrepo > /dev/null 2>&1
hg glog --template '{rev}: {desc}\n'
echo
echo "% Rebasing B onto E"
hg rebase -s 1 -d 4 2>&1 | sed 's/\(saving bundle to \).*/\1/'
echo
echo "% Force a commit on B' during the interruption"
hg update -C 5
addcommit "Extra" 6
hg glog --template '{rev}: {desc}\n'
echo
echo "% Abort the rebasing"
hg rebase --abort
hg glog --template '{rev}: {desc}\n'
exit 0