#!/usr/bin/env bash # FIXME: Add checks # FIXME: Add logging REPO=$(realpath "$GIT_DIR"); TARGET_DIR="$1"; BRANCH="$2"; unset GIT_DIR unset GIT_PUSH_OPTION_COUNT function perform_clone_or_pull { target="$1"; echo "Checking out working copy to remote: $target" if [ ! -e "$target/.git" ]; then git clone "$REPO" "$target" fi cd "$target" echo -n "Working directory: " pwd git fetch &> /dev/null echo "Checking out branch $BRANCH" git checkout "origin/$BRANCH" } while read old_rew new_rew ref; do if [ "$ref" == "refs/heads/$BRANCH" ]; then perform_clone_or_pull "$TARGET_DIR"; fi; done;