#!/bin/bash # sync a local git repo with a remote one over ssh # usage: gitsync # defaults pi3 and /var/www/html/Media-Viewer # handle defaultz handle_args () { if [ -z $1 ]; then remote_host='pi3' else remote_host="$1" fi if [ -z $2 ]; then remote_dir='/var/www/html/Media-Viewer' else remote_dir="$2" fi } syncstatus () { # view local and remote status before proceeding echo -e "\nLOCAL status\n" git status echo -e "\nREMOTE status\n" ssh $remote_host "/bin/bash -c git -C $remote_dir status" } # synchronize git repos on local and remote gitsync () { echo "INFO | Starting gitsync" # run on remote ssh $remote_host "git -C \"$remote_dir\" pull | tee -a \"$log_file\"" echo "REMOTE | Finished git pull on $remote_host:$remote_dir" $? ssh $remote_host "git -C \"$remote_dir\" add . | tee -a \"$log_file\"" echo "REMOTE | Finished git adding on $remote_host:$remote_dir" $? ssh $remote_host "git -C \"$remote_dir\" commit -m \"autosync at $(date +%s)\" | tee -a \"$log_file\"" echo "REMOTE | Finished git commit on $remote_host:$remote_dir" $? ssh $remote_host "git -C \"$remote_dir\" push | tee -a \"$log_file\"" echo "REMOTE | Finished git push on $remote_host:$remote_dir" $? ssh $remote_host "git -C \"$remote_dir\" status | tee -a \"$log_file\"" echo "REMOTE | Finished git status on $remote_host:$remote_dir" $? # run on local git pull | tee -a "$log_file" echo "LOCAL | Finished git pulling" $? git add . | tee -a "$log_file" echo "LOCAL | Finished git adding" $? git commit -m "autosync at $(date +%s)" | tee -a "$log_file" echo "LOCAL | Finished git comitting" $? git push | tee -a "$log_file" echo "LOCAL | Finished git pushing" $? git status | tee -a "$log_file" echo "LOCAL | Finished git status" $? echo "INFO | Finished gitsync" } handle_args syncstatus gitsync syncstatus