This may be obvious to the git experts, but I am not that. There also may be a better way to do this, but again, not a git expert.
I have a git repo set up on WPEngine, but they only allow the whole server to be a repo, not just a single plugin. This was a problem since the whole server directory was not in my current repo. So it was either make a new repo which was basically a copy of my current repo but a different folder structure or keep on using SFTP. I decided to make a new duplicate repo. The problem (which i also had with SFTP) was finding the files that changed and pushing them to the server. This is both error-prone and slow. I found a script that could copy all changed files from the last commit into my WPEngine deploy directory and also discovered a way to do this automatically when pushing from my main repo.
Create/Save this script in .git/hooks/pre-push file. This would be in the main git repo I work in. This copies all changed files to the WPEngine deployment repo.
#!/bin/bash
TARGET=”/your/deployment/path”
MOST_RECENT=$(git log -n 1 –pretty=format:’%h’)
PREV=$(git log –skip=1 -n 1 –pretty=format:’%h’)
echo “Coping to $TARGET”
for i in $(git diff –name-only $MOST_RECENT $PREV)
do
# First create the target directory, if it doesn’t exist.
mkdir -p “$TARGET/$(dirname $i)”
# Then copy over the file.
cp “$i” “$TARGET/$i”
done
exit 0
Thanks to the following articles about pre-push hooks and how to get the files between commits.
http://www.phprepo.in/2012/04/git-copy-all-changed-files-between-two-commits-with-directory-structure/
http://blog.ittybittyapps.com/blog/2013/09/03/git-pre-push/