#!/bin/sh -e usage() { cat <<'EOF' Usage: git bare-clone [-d bare-repo-dir] [-h] [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/*"