#!/bin/sh -e DIR="$1" COMMIT="$2" cd "$DIR" if [ "$(git rev-parse HEAD)" = "$COMMIT" ]; then # Commit is already checked out, nothing to do! exit 0 fi if ! git cat-file -e "$COMMIT"; then echo "[$DIR] Missing $COMMIT, fetching git repository" git fetch fi if git rev-parse -q "origin/$COMMIT" 1>/dev/null 2>&1; then echo "[$DIR] Checking out origin/$COMMIT" git checkout -q -f "origin/$COMMIT" else echo "[$DIR] Checking out $COMMIT" git checkout -q -f "$COMMIT" fi