Git post-receive hook

Posted in Git, 06.10.2016 17:10

Wenn das git-repo auf demselben Server liegt wie die Webserver-Dokumentroot, kann man recht einfach die Serverdokumente nach jedem Commit updaten lassen.

Auf dem Server muß ebenfalls git installiert sein.

Nachdem das Repo angelegt wurde, z.B. unter src/git/repo.git kann man unter /src/git/repo.git/hooks (dort sind ein paar Samples, komischerweise aber nicht für diesen Zweck) eine Datei names post-receive anlegen, mit folgendem Inhalt:

#!/bin/bash

while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
echo "Master ref received. Deploying master branch to production..."
git --work-tree=/var/www/magento --git-dir=/var/www/src/git/repo.git checkout -f
else
echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server."
fi
done

Nach jedem push von der master-branch bekommt man so eine Meldung (siehe echo-Zeile oben).