Das Tor zur Automatisierung: Hooks (GIT)

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

GIT-Tutorial: Übersicht

Vorbemerkung

Git bietet die Möglichkeit, sich in die Bearbeitungskette per Script einzugliedern und damit bestimmte Abläufe zu automatisieren.

Vorgehen

  • Script erstellen (Bash oder Perl oder ...)
  • Kopieren in das Verzeichnis .git/hooks/<event>

Als Events gibt es:

  • applypatch-msg
  • commit-msg
  • post-commit
  • post-receive
  • post-update
  • pre-applypatch
  • pre-commit
  • prepare-commit-msg
  • pre-rebase
  • update

Beispiel 1

Ziel

Es soll automatisch nach jedem 50.ten Update eine Bereinigung (Git-Garbage-Collection) durchgeführt werden.

Script

Datei post-update-gc:

#! /bin/bash

MAX=50
# BASE wird von set-post-update geaendert!
BASE=/opt/git
FILE_COUNTER=$BASE/counter
LOG=$BASE/post-updater-gc.log
if [ -f $FILE_COUNTER ] ; then
	COUNTER=$(cat $FILE_COUNTER)
else
	COUNTER=0	
fi
COUNTER=$(expr $COUNTER + 1)
if [[ $COUNTER > $MAX ]] ; then
	COUNTER=0
	date "+%Y.%m.%d %H:%M:%S git gc" >>$LOG
	git gc &
fi
echo $COUNTER >$FILE_COUNTER
exit 0

Installation

cp post-update-gc .git/hooks/post-update

Beispiel 2

gitolite ist ein System, das Repositories verwaltet. Es basiert auf git: Definitionsdateien werden lokal gepflegt und per Push in die Zentrale gebracht. Mittels Git-Hooks werden diese Definitionsdateien dann ausgewertet und entsprechende Aktionen ausgeführt, die die eigentliche Pflege der gehosteten Repositories leisten.

Es soll bei der Anlage eines Projekts mittels gitolite folgendes getan werden:

  • xxx