Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@anver
Forked from tanakahisateru/scp-git-diff.sh
Created June 4, 2017 20:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anver/2eebe0a00a1f1ab6a509ab6fab6ed857 to your computer and use it in GitHub Desktop.
Save anver/2eebe0a00a1f1ab6a509ab6fab6ed857 to your computer and use it in GitHub Desktop.
Send changed files under Git via SCP (if SSH password auth)
#!/bin/sh
if [ $# -ne 1 ]; then
echo "$0 <git-commit>" 1>&2
exit 1
fi
git diff --name-status $1
read -p "Press any key to execute..."
rm -rf ./tmp
git diff --name-only $1 | git checkout-index --prefix=./tmp/htdocs/ --stdin
git diff --name-status $1 | awk '{if($1=="D") print $2}' > ./tmp/deleted
auto_ssh()
{
expect -c "
spawn $1
expect {
\" Are you sure you want to continue connecting (yes/no)?\" {
send \"yes\r\"
expect \"password:\"
send \"${2}\r\"
}
\"password:\" {
send \"${2}\r\"
}
}
interact
"
}
auto_ssh 'scp -r ./tmp/htdocs username@hostname.com:/home/vhost/www.hostname.com/htdocs' mypassword
for line in `cat ./tmp/deleted`
do
auto_ssh 'ssh username@hostname.com rm -f /home/vhost/www.hostname.com/htdocs/'$line\' mypassword
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment