181 Stimmen

Was ist ein pre-revprop-change-Hook in SVN und wie kann ich ihn erstellen?

Ich wollte einen Protokollkommentar im Repository-Browser bearbeiten und erhielt eine Fehlermeldung, dass für das Repository kein pre-revprop-change-Hook existiert. Was ist ein "pre-revprop-change"-Haken, abgesehen von seinem unheimlichen Namen, und wie kann ich ihn erstellen?

16 Stimmen

Jetzt ist dieser Link der zweite, gleich nach einem Link zu dieser Frage :)

0 Stimmen

Der Link über führt zu einem SEHR veralteten SVNBook 1.0. Die aktuelle ist 1.7 und 1.8 (nightly): svnbook.red-bean.com/de/1.8

216voto

patmortech Punkte 10039

Für Windows finden Sie hier einen Link zu einer Beispiel-Batchdatei, die nur Änderungen an der Protokollmeldung zulässt (nicht an anderen Eigenschaften):

http://ayria.livejournal.com/33438.html

Kopieren Sie den nachstehenden Code in eine Textdatei und nennen Sie sie pre-revprop-change.bat und speichern Sie sie im Verzeichnis \hooks Unterverzeichnis für Ihr Repository.

@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1

41 Stimmen

Sie hätten auf die dortige Version verlinken können stackoverflow.com/questions/6155/ . Ich habe diesen Haken geschrieben und ihn vor einiger Zeit im SVN-Forum gepostet. Ich schätze, ich hätte in den Hook-Kommentaren ein paar Credits angeben sollen.

1 Stimmen

Ich verwende dieses Skript mit VisualSVN 2.0.8 und TortoiseSVN 1.6.11 und es funktioniert einwandfrei.

28 Stimmen

Sie können Hooks in VisualSVN bearbeiten, indem Sie mit der rechten Maustaste auf den Namen Ihres Projektarchivs in VisualSVN Server klicken und "Eigenschaften..." wählen. Sie sehen dann eine Registerkarte "Hooks". Dort sehen Sie die verschiedenen Arten von Hooks, die zur Verfügung stehen. Wählen Sie den richtigen aus, klicken Sie auf "Bearbeiten" und fügen Sie den obigen Code ein. Ich hoffe, das hilft den VisualSVN-Benutzern!

53voto

PW. Punkte 3727

Im Grunde ist es ein Skript, das gestartet wird, bevor eine nicht versionierte Eigenschaft im Repository geändert wird, so dass Sie genauer verwalten können, was in Ihrem Repository passiert.

In der SVN-Distribution gibt es Vorlagen für verschiedene Hooks, die sich im Unterverzeichnis /hooks befinden (*.tmpl, die Sie je nach Betriebssystem bearbeiten und umbenennen müssen, um sie zu aktivieren).

2 Stimmen

Alle Anweisungen sind im Skript der Hakenvorlage enthalten. Wenn Sie den Haken für eine svnsync spiegeln, dann muss das Standardskript geändert werden, da es nur Änderungen an svn:log zulässt. Svnsync ändert mehr als das, also habe ich einfach ein exit 0 ein, um alle Eigenschaftsänderungen zuzulassen (da dies nur für mich ein Spiegel ist).

0 Stimmen

... dann speichern Sie es als pre-revprop-change in dasselbe Verzeichnis und machen es für den Webserver-Benutzer (unter Linux) ausführbar.

22voto

Alois Heimer Punkte 1672

Für Linux, um die Ausgabe eines Protokollkommentars zu ermöglichen,

  • Suchen Sie die Datei pre-revprop-change.tmpl im hooks Verzeichnis Ihres Repositorys
  • Kopieren Sie die Datei in dasselbe Verzeichnis und benennen Sie sie um in pre-revprop-change
  • der Datei eine Ausführungserlaubnis geben (für den Serverbenutzer, z. B. www-data )

Bearbeitet: (Dank an lindes)

  • Danach müssen Sie das Skript möglicherweise so bearbeiten, dass es einen Exit-Wert von 0 für die Art von Bearbeitungen, die Sie zulassen möchten.

0 Stimmen

Das ist unzureichend... man muss die Exit-Werte noch entsprechend ändern. Aber ich fand es trotzdem hilfreich, als Hinweis auf die richtige Stelle, an der man suchen muss... was in einigen anderen Antworten fehlte, oder die Windows-spezifische Antworten gaben. Also vielen Dank dafür.

1 Stimmen

Ich bin mir ziemlich sicher, dass in meiner Ubuntu-Linux-Version das Kopieren und Erteilen der Erlaubnis ausreichte. Aber ich weiß es nicht mehr genau. Ich habe die Antwort entsprechend geändert. Danke!

0 Stimmen

Nun, ich bin mir sicher, dass es bei mir nicht funktioniert hat, als ich es vor 2 Tagen ausprobiert und diesen Kommentar hinzugefügt habe. Nach der Bearbeitung funktioniert diese Antwort für mich.

11voto

Philibert Perusse Punkte 3766

Hier ist der Link zu der Stack Overflow-Frage mit vielen gemeinsamen Haken Gängige Typen von Subversion-Hooks einschließlich der ursprünglichen Quelle der pre-revprop-change Haken für Windows hier gecrosspostet.

Sie sollten sich dorthin wenden, da sie im Laufe der Zeit verbessert werden können.

8voto

yasin Punkte 212

Danke #patmortech

Und ich habe Ihren Code hinzugefügt, der besagt, dass "nur derselbe Benutzer seinen Code ändern kann".

:: Only allow editing of the same user.
for /f "tokens=*" %%a in ( 
'"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %revision% %repository%') do ( 
set orgAuthor=%%a
)
if /I not "%userName%" == "%orgAuthor%" goto ERROR_SAME_USER

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X