Subversion: Zeilen gegen Checkin sperren

Problem: In diesem Falle war es eine Datei die ein Define enthielt was es erlaubte gewisse Teile einer Firmware anders zu kompilieren und so diverse Tests durchzuführen. Dummerweise ist mir genau dieses eine Define beim letzten Checkin nicht aufgefallen und wurde ausversehen eingecheckt - was zwar danach dann auffiel, aber unschön ist.

Lösung: Der Subversion pre-commit Hook. Mit diesem Skript kann man einen Checkin nach der Übertragung zum Server noch Prüfen und gegebenenfalls ablehnen - sogar mit einer Nachricht an den Absender damit dieser weiß was falsch lief.

Voraussetzung: Natürlich kann man gezielt nach bestimmten Zeilen suchen, aber ich wollte eine Universallösung - d.h. ich selbst bestimme wann eine Zeile zu schützen ist. Umgesetzt habe ich das Ganze dann, in dem ich an die jeweilige Zeile einen Kommentar anhänge, der die Worte PROHIBIT-CHECKIN enthält. Will man den Checkin dennoch erlauben, so muss man in die Commit-Nachricht irgendwo die Phrase ALLOW-CHECKIN schreiben.

Umsetzung: Im Subversion Repo-Verzeichnis muss im Unterverzeichnis hooks eine Datei namens pre-commit angelegt werden. Diese Datei muss mittels chmod +x pre-commit dann noch als Ausführbar markiert werden (das man dies vergessen hat, merkt man spätestens daran, dass beim Commit der Fehler 255 ohne genaue Fehlerursache auftritt). Die fertige Datei kann man hier herunterladen: pre-commit.