#!/bin/bash date_fmt="+%m-%d-%Y %H:%M:%S" local_checkout_base=/home/git/local/checkouts/edward package_path_base=/var/www/agpl.fsf.org/emailselfdefense.fsf.org/edward/ package_host=agpl.fsf.org package_name=edward repository=/home/git/repositories/edward.git remote_user=edward target_path=~$remote_user/edward-src doc_base=/var/www/docs/$package_name echo -n $(date "$date_fmt"); echo " - Starting post-update hook..." # Unset GIT_DIR to allow for calls to git clone/pull git update-server-info unset GIT_DIR # Extract the branch name branch=$(echo $1 | awk -F'/' '{print $3}') # Debug echo -n $(date "$date_fmt"); echo " - Processing branch: $1" # Set branch specific configurations case $branch in master) local_checkout=$local_checkout_base/$branch package_path=$package_path_base/ target_host=fencepost.gnu.org ;; *) echo $branch does not exist exit ;; esac doc_path=$doc_base/$branch echo -n $(date "$date_fmt"); echo " - Target host: $target_host" echo -n $(date "$date_fmt"); echo " - Target path: $target_path" echo -n $(date "$date_fmt"); echo " - Package host: $package_host" echo -n $(date "$date_fmt"); echo " - Package path: $package_path" echo -n $(date "$date_fmt"); echo " - Remote user: $remote_user" # See if local checkout exists if [ ! -d $local_checkout ]; then echo -n $(date "$date_fmt"); echo " - No local checkout detected, creating now" mkdir -p $local_checkout git clone $repository $local_checkout cd $local_checkout git checkout $branch else echo -n $(date "$date_fmt"); echo " - Updating local checkout" cd $local_checkout git checkout $branch git pull origin $branch fi echo -n $(date "$date_fmt"); echo " - Packing for package host" rm -f $local_checkout_base/*tar.gz rm -f $local_checkout_base/*zip cd $local_checkout_base tar czv --exclude-vcs -f $package_name.tar.gz $branch zip -r $package_name $branch -x "*/.git/*" "*/.gitignore" echo -n $(date "$date_fmt"); echo " - Pushing to packaging server: $package_host:" scp $package_name.zip $package_name.tar.gz $remote_user@$package_host:$package_path/ # Stop here if not updating a host if [ -z $target_host ]; then exit fi echo -n $(date "$date_fmt"); echo " - Pushing files to target host: $target_host:$target_path" rsync -arSX --exclude=.git/ --delete $local_checkout/* $remote_user@$target_host:$target_path/ &>/dev/null