diff options
Diffstat (limited to 'bin/ssh-fetch-git')
-rwxr-xr-x | bin/ssh-fetch-git | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/bin/ssh-fetch-git b/bin/ssh-fetch-git new file mode 100755 index 000000000..7de58ab73 --- /dev/null +++ b/bin/ssh-fetch-git @@ -0,0 +1,35 @@ +#! /bin/sh +# ssh-fetch-git : [user@]hostname x remote_dir x git_url x git_rev -> () +set -euf + +target=$1 +remote_dir=$2 +git_url=$3 +git_rev=$4 + +echo ' + set -euf + + if [ ! -d "$remote_dir" ]; then + mkdir -p "$remote_dir" + fi + + cd "$remote_dir" + + 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" +' \ + | ssh "$target" env \ + remote_dir="$remote_dir" \ + git_rev="$git_rev" \ + git_url="$git_url" \ + /bin/sh |