Tag: hook

Größe des Subversion Repositories beim Commit überprüfen

Juni 24th, 2009
Subversion Logo

Subversion Logo

Jetzt habe ich ewig nach einer Lösung für folgendes Problem gesucht:

Für unser Subversion-Hosting brauchte ich die Möglichkeit die Größe des Repositories zu limitieren. Im Idealfall sollte ein Commit verhindert werden, wenn dadurch die Größe überschritten wird.

Um einen Commit zu verhindern, braucht man einen pre-commit Hook. Dieser überprüft dann ob die Größe überschritten wird und beendet sich mit Fehlercode 0 wenn alles in Ordnung war und 1 (sowie einer Fehlermeldung) wenn es ein Problem gab.

Um die Verzeichnisgröße anzuzeigen, eignet sich das Linux-Kommando du (man du). Die folgende Zeile ermittelt die Größe eines Verzeichnisses in Megabyte:

MEGS=`du -sm $REPOS | sed -r "s/^([0-9\.]+).+/\1/"`

$REPOS ist eine Variable in der für unseren Fall das Repository steht.

Hat man auf diese Weise die Größe des Repository-Verzeichnisses ermittelt, wird die Größe noch mit der erlaubten Größe verglichen und im Falle des Überschreitens eine Fehlermeldung angezeigt.

if [ "$MEGS" -gt "$QUOTA" ]; then
        #send error message to stderr
        echo "Das Repository hat die zulässige Größe von ${QUOTA}MB überschritten." 1>&2
        exit 1;
fi

via The Dumb Terminal.