I created a bare git repo on my server and set up the following post-receive hook from this blog:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
git --work-tree=/path/to/my/project/live/ checkout -f $branch
echo 'Changes pushed live.'
fi
if [ "develop" == "$branch" ]; then
git --work-tree=/path/to/my/project/dev/ checkout -f $branch
echo 'Changes pushed to dev.'
fi
done
So that whenever I push locally to my server, the changes would automatically be published on each branch's folder without the need to manually pull.
I set the right permissions to both live an dev folder:
drwxrwsr-x 2 git git 4096 Sep 29 12:10 live/
drwxrwsr-x 2 git git 4096 Sep 29 12:09 dev/
And pushing from the develop branch works as expected. The problem occurs when I checkout the master branch and do a merge. When I push the master, the new files get copied to the live folder on my server, but the files I removed locally are not being deleted.
How can I make post-receive properly update the live folder? Thanks!