darcs-2.16.1: tests/network/ssh.sh
#!/bin/bash
# echo 'Comment this line out and run the script by hand'; exit 200
# . $(dirname $0)/../lib
# . $(dirname $0)/sshlib
. lib
. sshlib
REMOTE_DARCS=$(which darcs)
# ================ Setting up remote repositories ===============
${SSH} ${REMOTE} "
rm -rf ${REMOTE_DIR}
mkdir ${REMOTE_DIR}
cd ${REMOTE_DIR}
PATH=$(dirname $REMOTE_DARCS):$PATH
mkdir testrepo; cd testrepo
darcs init
echo moi > _darcs/prefs/author
touch a; darcs add a
darcs record --skip-long-comment a --ignore-times -am 'add file a'
echo 'first line' > a
darcs record --skip-long-comment a --ignore-times -am 'add first line to a'
cd ..
darcs clone testrepo testrepo-pull
cd testrepo-pull
echo moi > _darcs/prefs/author
touch b; darcs add b; darcs record --skip-long-comment b --ignore-times -am 'add file b'
echo 'other line' > b; darcs record --skip-long-comment b --ignore-times -am 'add other line to b'
cd ..
darcs clone testrepo testrepo-push
darcs clone testrepo testrepo-send
"
# ================ Settings ===============
echo ${DARCS_SSH_FLAGS}
echo ${DARCS_SSH}
echo ${DARCS_SCP}
echo ${DARCS_SFTP}
# ================ Checking darcs clone ==================
darcs clone ${DARCS_SSH_FLAGS} ${REMOTE}:${REMOTE_DIR}/testrepo ${DARCS_SSH_FLAGS}
# check that the test repo made it over
[ -d testrepo ]
[ -d testrepo/_darcs ]
[ -f testrepo/a ]
# if the above test is disabled we just init a blank repo
# so that the other tests can continue
if [ ! -d testrepo ]; then
mkdir testrepo
cd testrepo
darcs init
cd ..
fi
# ================ Checking darcs pull =================
darcs clone ${DARCS_SSH_FLAGS} testrepo testrepo-pull
cd testrepo-pull
darcs pull -a ${DARCS_SSH_FLAGS} ${REMOTE}:${REMOTE_DIR}/testrepo-pull
# see if the changes got pulled over
grep "other line" b
cd ..
# ================ Checking darcs push and send ================="
darcs clone ${DARCS_SSH_FLAGS} testrepo testrepo-push
cd testrepo-push
echo moi > _darcs/prefs/author
echo "second line" >> a
darcs record --skip-long-comment a --ignore-times -am "add second line to a"
touch c; darcs add c
darcs record --skip-long-comment --ignore-times -am "add file c" c
darcs push -a --remote-darcs=$REMOTE_DARCS ${DARCS_SSH_FLAGS} ${REMOTE}:${REMOTE_DIR}/testrepo-push
# check that the file c got pushed over
${SSH} ${REMOTE} "[ -f ${REMOTE_DIR}/testrepo-push/c ]"
darcs send -a --no-edit-description ${DARCS_SSH_FLAGS} ${REMOTE}:${REMOTE_DIR}/testrepo-send -o mybundle.dpatch
# check that the bundle was created
grep "add file c" mybundle.dpatch
cd ..
# ================ Checking darcs clone to ssh destination =================="
cd testrepo
darcs clone . ${DARCS_SSH_FLAGS} ${REMOTE}:${REMOTE_DIR}/testrepo-clone
# check that the clone was successful
${SSH} ${REMOTE} "[ -d ${REMOTE_DIR}/testrepo-clone/_darcs ]"
${SSH} ${REMOTE} "[ -f ${REMOTE_DIR}/testrepo-clone/a ]"
cd ..
# ======== Checking push over ssh with a conflict ========="
${SSH} ${REMOTE} "echo apply no-allow-conflicts >> ${REMOTE_DIR}/testrepo-clone/_darcs/prefs/defaults"
cd testrepo
echo moi > _darcs/prefs/author
echo 'change for remote' > a
darcs record --skip-long-comment --ignore-times -am 'change for remote'
darcs push -a --remote-darcs=$REMOTE_DARCS
darcs ob --last 1 -a
echo 'change for local' > a
darcs record --skip-long-comment --ignore-times -am 'change for local'
darcs push -a --remote-darcs=$REMOTE_DARCS > log 2>&1 || :
grep -q 'conflicts options to apply' log
cd ..