echo "An instance of vcsh already entered a repository." 1>&2
# Exit vcsh if the process which keeps the lock is still alive.
- if kill -0 $(cat "$LOCKDIR/pid") 2>/dev/null;
+ if kill -0 "$(cat "$LOCKDIR/pid")" 2>/dev/null;
then
# Kill the parent process instead of just bailing out because vcsh does
# not catch the hook exit value.
git config core.sparseCheckout true
rm -f "$GIT_DIR/info/sparse-checkout"
echo "/*" > "$GIT_DIR/info/sparse-checkout"
- git read-tree -mu HEAD
+ RET=0
+ git read-tree -mu HEAD || RET=$?
git config core.sparseCheckout false
+
+ # if updating the working tree failed exit the whole vcsh process to prevent
+ # entering the repository.
+ if [ $RET -ne 0 ];
+ then
+ echo "Fix the problems before entering the repository." 1>&2
+ kill -- -$PPID
+ fi
fi