Fix income/pull with bundle and -R (issue 820).
Uses ui.setconfig() to tell bundlerepo where the main repo is. This is
needed for when the --repository option is used.
Adds tests to test-bundle and a new test script
test-mq-pull-from-bundle, which plays out the situation that initially
made me detect this bug
(hg -R .hg/patches pull ../bundle.hg).
#!/bin/sh
# This test tries to exercise the ssh functionality with a dummy script
cat <<EOF > dummyssh
import sys
import os
os.chdir(os.path.dirname(sys.argv[0]))
if sys.argv[1] != "user@dummy":
sys.exit(-1)
if not os.path.exists("dummyssh"):
sys.exit(-1)
log = open("dummylog", "ab")
log.write("Got arguments")
for i, arg in enumerate(sys.argv[1:]):
log.write(" %d:%s" % (i+1, arg))
log.write("\n")
log.close()
r = os.system(sys.argv[2])
sys.exit(bool(r))
EOF
checknewrepo()
{
name=$1
if [ -d $name/.hg/store ]; then
echo store created
fi
if [ -f $name/.hg/00changelog.i ]; then
echo 00changelog.i created
fi
cat $name/.hg/requires
}
echo "# creating 'local'"
hg init local
checknewrepo local
echo this > local/foo
hg ci --cwd local -A -m "init" -d "1000000 0"
echo "# creating repo with old format"
hg --config format.usestore=false init old
checknewrepo old
echo "#test failure"
hg init local
echo "# init+push to remote2"
hg init -e "python ./dummyssh" ssh://user@dummy/remote2
hg incoming -R remote2 local
hg push -R local -e "python ./dummyssh" ssh://user@dummy/remote2
echo "# clone to remote1"
hg clone -e "python ./dummyssh" local ssh://user@dummy/remote1
echo "# init to existing repo"
hg init -e "python ./dummyssh" ssh://user@dummy/remote1
echo "# clone to existing repo"
hg clone -e "python ./dummyssh" local ssh://user@dummy/remote1
echo "# output of dummyssh"
cat dummylog
echo "# comparing repositories"
hg tip -q -R local
hg tip -q -R remote1
hg tip -q -R remote2
echo "# check names for repositories (clashes with URL schemes, special chars)"
for i in bundle file hg http https old-http ssh static-http " " "with space"; do
echo "# hg init \"$i\""
hg init "$i"
test -d "$i" -a -d "$i/.hg" && echo "ok" || echo "failed"
done