Files

44 lines
919 B
Bash
Executable File

#!/bin/sh -e
usage() {
cat <<'EOF'
Usage: git bare-clone [-d bare-repo-dir] [-h] <git-repo-url> [workspace]
EOF
}
BARE_REPO_DIR=".bare"
while getopts ":d:h" opt; do
case "$opt" in
d) BARE_REPO_DIR="$OPTARG" ;;
h) usage; exit 0 ;;
:) echo "Option -$OPTARG requires an argument." >&2; usage; exit 2 ;;
esac
done
shift $((OPTIND - 1))
if [ -z "$BARE_REPO_DIR" ]; then
echo "Bare repository directory is not specified." >&2
usage
exit 2
fi
GIT_REPO_URL="$1"
WORKSPACE="$2"
if [ -z "$GIT_REPO_URL" ]; then
echo "Git repository URL is required." >&2
usage
exit 2
fi
if [ -z "$WORKSPACE" ]; then
WORKSPACE="."
fi
if [ ! -d "$WORKSPACE" ]; then
mkdir -p $WORKSPACE
fi
git clone --bare ${GIT_REPO_URL} $WORKSPACE/$BARE_REPO_DIR && echo "gitdir: $BARE_REPO_DIR" > $WORKSPACE/.git && git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"