aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/git-checkout.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/git-checkout.sh')
-rwxr-xr-xscripts/git-checkout.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
new file mode 100755
index 0000000000..15b3ce9661
--- /dev/null
+++ b/scripts/git-checkout.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+if test $# -lt 3; then
+ echo "Usage: $0 <tree> <tag> <dir>"
+ exit 1
+fi
+
+TREE=$1
+TAG=$2
+DIR=$3
+
+set -e
+
+if test \! -d $DIR-remote; then
+ rm -rf $DIR-remote $DIR-remote.tmp
+ mkdir $DIR-remote.tmp; rmdir $DIR-remote.tmp
+ $GIT clone $TREE $DIR-remote.tmp
+ if test "$TAG" ; then
+ cd $DIR-remote.tmp
+ $GIT branch -D dummy >/dev/null 2>&1 ||:
+ $GIT checkout -b dummy $TAG
+ cd ..
+ fi
+ mv $DIR-remote.tmp $DIR-remote
+fi
+rm -f $DIR
+ln -sf $DIR-remote $DIR