Easy deployment with git hooks
I use Git for managing this website. After commiting content
locally, I push it to the remote side. Traditionally, then, I would ssh
into remote and copy the repositories content somewhere under /var/www
.
This was before I found out about a very handy feature implemented in Git
called "hooks".1
Hooks can automate tasks, such as deploying the repositories content on
the integration server when changes are pushed to the "live" branch. For
this to work, the following script must be put in the hooks
folder under
.git
(or directly under hooks
if it's a --bare
repository) and must
be named post-receive
.
#!/bin/sh
deploydir=/var/www
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "$branch" == "master" ]
then
git --work-tree=$deploydir checkout -f $branch
fi
done
Obviously, this is just one of many possible tasks that can be achieved with hooks.
For more information on this feature see Git's official handbook.