36 lines
614 B
Bash
Executable File
36 lines
614 B
Bash
Executable File
#! /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
|