summaryrefslogtreecommitdiffstats
path: root/bin/fetchgit
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-06-24 20:10:41 +0200
committertv <tv@shackspace.de>2015-06-24 20:11:02 +0200
commitd4ca5907d67c4f2374b6231ff03d8ed36b39ec96 (patch)
treeadaaca4d329501aeafb20d6cec6afaf81d0bdfe1 /bin/fetchgit
parent0fa8921e803876d85e1a0d49d925c2919714ee56 (diff)
s/nixos-fetch-git/fetchgit/
Diffstat (limited to 'bin/fetchgit')
-rwxr-xr-xbin/fetchgit25
1 files changed, 25 insertions, 0 deletions
diff --git a/bin/fetchgit b/bin/fetchgit
new file mode 100755
index 000000000..b9fe90854
--- /dev/null
+++ b/bin/fetchgit
@@ -0,0 +1,25 @@
+#! /bin/sh
+# usage: fetchgit REVISION URL WORKTREE
+set -euf
+
+git_rev=$1
+git_url=$2
+worktree=$3
+
+if [ ! -d "$worktree" ]; then
+ mkdir -p "$worktree"
+fi
+
+cd "$worktree"
+
+git init -q
+
+if ! current_url=$(git config remote.src.url); then
+ git remote add src "$git_url"
+elif [ "$current_url" != "$git_url" ]; then
+ git remote set-url src "$git_url"
+fi
+
+git fetch src
+
+git checkout "$git_rev"