We use git with a single bare repository for our puppet configuration, and each systems administrator has a local git repository clone which they push back to the origin. I wanted to set up email notification on this main repository which lives on a debian etch server.
I found post-receive-email in the git gitweb repository and assumed that it was not included in the debian package because it has a copyright with no OSS license included. It pulls its configuration from the git config, which is repository specific and kind of neat, but I had to modify it to call ‘git-repo-config’ instead of ‘git config’ because that’s all etch had. Again, assuming some weird debian problem, but I didn’t bother looking.
Then when I had trouble with it not working I noticed my ubuntu hardy box had a newer major revision of git-core than the debian etch box. That is 1.5.4.3-1ubuntu2 and 1.4.4.4-2 respectively. I poked around the git documentation a little bit and found that the post-receive hooks weren’t added until 1.5.1. But there is a 1.5.4 git-core deb in etch-backports.
If you want to upgrade multiple boxes with a local repository, you’ll need a copy more than git-core to meet the dependences. otherwise you can just use apt-get install after adding the backports repo.
add ‘deb http://www.backports.org/debian etch-backports main’ to /etc/apt/sources.list
sudo apt-get update sudo apt-get install debian-backports-keyring sudo apt-get update sudo apt-get install apt-move sudo rm /var/cache/apt/archives/git* for package in gitk gitweb `apt-cache search '^git-*' --names-only | awk '{ print $1 }'` ; do sudo /usr/lib/apt-move/fetch $package ; done
latest debs are in /var/cache/apt/archives, for copying to a local repository.
git-core 1.5.4.2-1~bpo40+2 includes git-config and ‘post-receive-email’.
cd /path-to-bare-git-repo/.git/hooks ln -sf /usr/share/doc/git-core/contrib/hooks/post-receive-email post-receive sudo chmod a+x /usr/share/doc/git-core/contrib/hooks/post-receive-email git-config hooks.mailinglist "to@example.org" git-config --global user.name "Your Name" git-config --global user.email "Your Email"