Git for site deployment¶
On the remote:
$ mkdir website.git && cd website.git
$ git init --bare
Initialized empty Git repository in /home/user/website.git/
Define a post-receive hook:
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout --force
$ chmod +x hooks/post-receive
On the main site define a remote:
$ git remote add web ssh://server.example.org/home/user/website.git
$ git config remote.web.push "+master:refs/heads/master"
$ git push web
Reference: Using Git to manage a web site by Abhijit Menon-Sen
Ian Bicking does not like this strategy and prefer to:
copy the working directory to a new location (minus .git/), commit that, and push the result to your deployment remote. You can send modified and untracked files, and you can run a build script before committing and push the result of the build script, all without sullying your “real” source control.
—Ian Bicking in this blog
He writed git-sync automating this task