From: Matthijs Kooijman Date: Thu, 13 Aug 2009 09:18:59 +0000 (+0200) Subject: git: Automatically create non-existing repositories. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;ds=sidebyside;h=35359cf1b51f5d677b6351d7529f1f4986c0f7b8;p=matthijs%2Fservers%2Fdrsnuggles.git git: Automatically create non-existing repositories. This extends the git-prepend-base script to automatically create a bare git repository when it does not exist yet. This also makes the option handling slightly more robust, to prevent the script from messing with arguments that aren't git repository paths at all. --- diff --git a/usr/local/bin/git-prepend-base b/usr/local/bin/git-prepend-base index 6b524cb..cd8f7c1 100755 --- a/usr/local/bin/git-prepend-base +++ b/usr/local/bin/git-prepend-base @@ -16,9 +16,24 @@ ARGS=() i=0 until [ "$#" -eq 0 ] do - if ! echo $1 | egrep "^(--|$BASE_PATH)" &>/dev/null; then - ARGS[$i]="$BASE_PATH/$1" + if echo $1 | egrep "^--" &>/dev/null; then + # This is an option argument, leave it untouched + ARGS[$i]="$1" + elif echo $1 | egrep ".git$" &>/dev/null; then + # This is a path to a git repository + DIR="$1" + # Prepend BASE_PATH if the path does not start with it already. + if ! echo $DIR | egrep "^$BASE_PATH" &>/dev/null; then + DIR="$BASE_PATH/$DIR" + fi + + # Create the git repository if it does not exist yet + if [ ! -e "$DIR" ]; then + mkdir "$DIR" &> /dev/null && (cd $DIR && git --bare init &> /dev/null) + fi + ARGS[$i]="$DIR" else + # Not a path to a git repository, leave untouched. ARGS[$i]="$1" fi ((i++))