fragen stichworte

Implementieren und Testen eines Subversion-Hooks

Hintergrund
Ich versuche, eine Reihe von Commit-Hooks für Subversion zu implementieren. Ich habe viel recherchiert, um einen einfachen Testhaken zum Laufen zu bekommen, aber ich hatte kein Glück.

Als Referenz habe ich die folgenden Links durchgesehen, gefolgt und dann versucht, Methoden zu kombinieren:
1. Subversion-Handbuch für die Verzeichniskonfiguration
2. Tortoisevn-Handbuch für serverseitige Hook-Skripts
3. Eine Erklärung zu serverseitigen Hooks, die einen Link zum Subversion-Handbuch enthält 4. Das Wordaligned-Tutorial für Pre-Commit-Hooks
5. Eine Serverfehler-Antwort auf Probleme mit Commit-Hooks

Es gibt auch eine Reihe anderer Sites, auf die ich verwiesen und verwendet habe, aber ich kann immer noch keine Commit-Hooks zur Arbeit bekommen.

Meine Umgebung
Auf meinem Computer wird RHEL6 (Cent OS) ausgeführt.
Die Subversion befindet sich auf einem Remote-Computer, auf den ich ohne Erlaubnis meines Vorgesetzten nicht direkt zugreifen kann.
Auf dem Remote-Computer wird Subversion 1.6 ausgeführt.

Dies ist die aktuelle Struktur für mein Repository:

test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk  

Für die Datei vor dem Festschreiben sind die Berechtigungen vorübergehend auf 777 festgelegt. Für alle Verzeichnisse sind die Berechtigungen auf 775 gesetzt.

Dies ist das Beispielskript, das ich erstellt habe, um den Commit-Hook zu testen:

#!/usr/bin/env bash

echo "THOU SHALL NOT PASS" 1>&2

exit 1

Ich habe alles geprüft und getestet, um sicherzustellen, dass mein Pre-Commit-Hook ordnungsgemäß funktioniert. Ich weiß nicht, was ich noch überprüfen muss, um sicherzustellen, dass es funktioniert. Ich kann festlegen, was ich will, und ich bekomme keine Nachrichten auf meinem Bildschirm.

Fragen
1. Gibt es etwas, das ich bei der Implementierung von Hooks übersehen oder übersehen habe?
2. Wenn ich einen Hook auf diese Art und Weise implementiere, muss ich mich darum kümmern, denselben Hook erneut in Tortoisesvn zu implementieren?

Feedback und/oder Vorschläge werden sehr geschätzt.

antworten

  1. Is there anything that I have missed or overlooked in implementing hooks?

Benutze keine Erlaubnis 777. Manchmal kann das sogar kontraproduktiv sein. Einige Tools funktionieren möglicherweise nicht mit solchen verdächtigen Berechtigungen. In Ihrem Fall ist das wahrscheinlich nicht das Problem, weil es bei dieser Einstellung für mich funktioniert. Aber tu es einfach nicht. Ändere es auf 755.

Eine weitere sinnvolle Überprüfung besteht darin, das Hook-Skript direkt auf dem Server auszuführen:

/path/to/test-for-svn-hooks/hooks/pre-commit

Wenn dein Skript mehr sinnvollen Inhalt hat, dann sollten Sie auch mit geeigneten Parametern testen, zum Beispiel:

/path/to/test-for-svn-hooks/hooks/pre-commit/path/to/test-for-svn-hooks TXN

Als nächstes Testen Sie es mit einem Checkout auf dem Server selbst, zum Beispiel:

svn co/path/to/test-for-svn-hooks/tmp/test1
cd/tmp/test1
date > date.txt
svn add date.txt
svn ci -m 'added some junk'

Basierend auf dem, was Sie in Ihrem Beitrag geschrieben haben, sollten diese Schritte funktionieren. Ich kenne die Details der Bedingungen nicht, unter denen Ihre Tests fehlschlagen. Wenn Sie zu diesem Punkt gelangen können, dann werden Sie vielleicht den Grund für Ihre fehlgeschlagenen Tests sehen.

  1. If I implement a hook in this fashion do I have to worry about implementing the same hook again in Tortoisesvn?

Nein. Hooks sind auf der Serverseite definiert. Keine Notwendigkeit, etwas auf der Client-Seite zu tun. Alle Clients unterliegen den Regeln, die Sie im Pre-Commit-Hook definiert haben.