44 lines
919 B
Bash
Executable File
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/*"
|