From 35359cf1b51f5d677b6351d7529f1f4986c0f7b8 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Thu, 13 Aug 2009 11:18:59 +0200 Subject: [PATCH] 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. --- usr/local/bin/git-prepend-base | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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++)) -- 2.30.2