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.
i=0
until [ "$#" -eq 0 ]
do
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"
+ # Not a path to a git repository, leave untouched.