W przypadku kiedy w swoim projekcie – mniejszym lub większym – korzystasz z systemu kontroli wersji git warto zapoznać się z funkcjonalnością, którą dostarcza git a mianowicie git hooks. Git hooks czy jak kto woli po naszemu haki ang. hook -hak, jest funkcjonalnością, która automatycznie pozwala uruchomić zdefiniowane skrypty na określone zachowania w systemie czyt. systemie kontroli wersji.
Z listą wszystkich dostępnych hooks można zapoznać się w tutaj. W poniższym, krótkim artykule przyjrzymy się jednemu z nich a mianowicie post-receive. Skrypt ten uruchamiany jest w momencie kiedy proces wchodzący jest zakończony. Może być wykorzystywany do aktualizacji innych procesów lub po prostu do powiadomienia użytkownika o zakończeniu procesu.
#!/bin/bash
#path to root directory of your project
TARGET="/home/project/dev"
#path to git bare repository
GIT_DIR="/home/project/project.bare"
BRANCH="develop"
while read oldrev newrev ref
do
if [ "$ref" = "refs/heads/$BRANCH" ];
then
echo "Ref $ref received. Deploying ${BRANCH} branch..."
#git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
cd $TARGET
unset GIT_DIR
git pull
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done