Ich wollte einen Protokollkommentar im Repository-Browser bearbeiten und erhielt die Fehlermeldung, dass für das Repository kein Pre-Revprop-Change-Hook vorhanden ist. Was ist neben einem beängstigenden Namen ein Pre-Revprop-Change-Hook und wie erstelle ich ihn?
168
Antworten:
Grundsätzlich handelt es sich um ein Skript, das gestartet wird, bevor die nicht versionierte Eigenschaft im Repository geändert wird, damit Sie genauer verwalten können, was in Ihrem Repository geschieht.
In der SVN-Distribution befinden sich Vorlagen für verschiedene Hooks im Unterverzeichnis / hooks (* .tmpl, die Sie je nach Betriebssystem bearbeiten und umbenennen müssen, um sie zu aktivieren).
quelle
svnsync
Spiegel benötigen, muss das Standardskript geändert werden, da nur Änderungen an svn: log zulässig sind. Svnsync ändert sich mehr als dies, daher füge ich einfach ein einexit 0
, um alle Eigenschaftsänderungen zuzulassen (da dies nur ein Spiegel für mich ist).pre-revprop-change
dann im selben Verzeichnis und machen Sie es für den Webserver-Benutzer (unter Linux) ausführbar.Für Windows ist hier ein Link zu einer Beispiel-Batchdatei, die nur Änderungen an der Protokollnachricht zulässt (keine anderen Eigenschaften):
http://ayria.livejournal.com/33438.html
Kopieren Sie den folgenden Code grundsätzlich in eine Textdatei, benennen Sie ihn
pre-revprop-change.bat
und speichern Sie ihn im\hooks
Unterverzeichnis Ihres Repositorys.quelle
Damit Linux die Ausgabe eines Protokollkommentars zulässt,
pre-revprop-change.tmpl
in derhooks
Verzeichnis Ihres Repositoryspre-revprop-change
www-data
)Bearbeitet: (danke an lindes)
0
für die Art der Änderungen zurückzugeben, die Sie zulassen möchten.quelle
Hier ist der Link zur Stapelüberlauffrage mit vielen allgemeinen Hooks. Häufige Arten von Subversion-Hooks , einschließlich der ursprünglichen Quelle des
pre-revprop-change
für Windows, die hier veröffentlicht wurde.Sie sollten sich dort beziehen, da sie sich im Laufe der Zeit verbessern können.
quelle
Danke #patmortech
Und ich habe Ihren Code hinzugefügt, der "nur derselbe Benutzer seinen Code ändern kann".
quelle
Der Name des Hook-Skripts ist nicht so beängstigend, wenn Sie die Entschlüsselung verwalten: Es handelt sich um einen Hook zur Änderung der Eigenschaften vor der Revision . Kurz gesagt, der Zweck von
pre-revprop-change
Hook-Skripts besteht darin, Änderungen an nicht versionierten (Revisions-) Eigenschaften zu steuern und Benachrichtigungen zu senden (z. B. eine E-Mail zu senden, wenn die Revisionseigenschaft geändert wird).In Subversion gibt es zwei Arten von Eigenschaften:
svn:needs-lock
undsvn:mime-type
), die für Dateien und Verzeichnisse festgelegt werden können,svn:log
undsvn:date
), die für Repository- Revisionen festgelegt wurden .Versionierte Eigenschaften haben einen Verlauf und können von normalen Benutzern bearbeitet werden, die Lese- / Schreibzugriff auf ein Repository haben. Auf der anderen Seite haben nicht versionierte Eigenschaften keine Historie und dienen hauptsächlich Wartungszwecken. Wenn Sie beispielsweise eine Revision festschreiben, wird diese sofort
svn:date
mit der UTC-Zeit Ihres Commits,svn:author
Ihrem Benutzernamen undsvn:log
Ihrer Commit-Protokollnachricht (falls Sie eine angegeben haben) angezeigt.Wie bereits erwähnt, dient das
pre-revprop-change
Hook-Skript dazu, Änderungen der Revisionseigenschaften zu steuern. Sie möchten nicht, dass jeder, der Zugriff auf ein Repository hat, alle Revisionseigenschaften ändern kann. Daher ist das Ändern von Revisionseigenschaften standardmäßig verboten. Damit Benutzer Eigenschaften ändern können, müssen Sie einenpre-revprop-change
Hook erstellen .Der einfachste Haken kann nur eine Zeile enthalten :
exit 0
. Jeder authentifizierte Benutzer kann Revisionseigenschaften ändern und sollte nicht in einer realen Umgebung verwendet werden. Unter Windows können Sie ein Batch-Skript oder ein PowerShell-basiertes Skript verwenden, um eine Logik innerhalb despre-revprop-change
Hooks zu implementieren .Dieses PowerShell-Skript ermöglicht nur das Ändern von
svn:log
Eigenschaften und lehnt leere Protokollnachrichten ab.Mit diesem Batch-Skript kann nur der Benutzer "svnmgr" die Revisionseigenschaften ändern:
quelle
Für PC-Benutzer: Die Erweiterung .bat funktionierte bei Windows Server-Bearbeitung nicht. Ich habe VisualSvn verwendet, wie Django Reinhardt vorgeschlagen hat, und es wurde ein Hook mit der Erweiterung .cmd erstellt.
quelle
(Diese Lösung hat sicherlich Nachteile, da nichts überprüft / verboten wird. Aber für meinen Fall - ein lokales Repo, das nur ich verwende - scheint es zu funktionieren.)
quelle