Windows-Pre-commit Haken für Subversion Kommentar Länge
-
22-08-2019 - |
Frage
ich zu sein scheinen nirgends mit diesem zu bekommen. Entweder im Internet nach einem Skript suchen, bekam usw. Jeder, der ein Skript, das Sie können einfach die Out-of-Box-Pre-commit.tmpl in einer Windows-Umgebung bearbeiten, die in Tortoise Subversion auf begehen x Zeichen eingegeben werden in einen Kommentar erfordert global so dass alle Mitglieder des Teams erforderlich sind, während diese Anforderung an die Clients aus dem SVN-Server nach unten gedrückt wird?
Ich weiß nicht, die Skriptsprache, und dies sollte etwas verdammt einfach sein, ohne dass ich die Zeit nehmen, Skripting für die nächsten 3 Stunden, um herauszufinden.
Lösung
Dies ist eine .bat-Datei zu benötigen gibt es einen Kommentar. Es überprüft das Vorhandensein von mindestens einem Zeichen in dem Kommentar.
@echo off
:: Stops commits that have empty log messages.
@echo off
setlocal
rem Subversion sends through the path to the repository and transaction id
set REPOS=%1
set TXN=%2
svnlook log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto err) else exit 0
:err
echo. 1>&2
echo Your commit has been blocked because you didn't enter a comment. 1>&2
echo Write a log message describing the changes made and try again. 1>&2
echo Thanks 1>&2
exit 1
Diese Datei befindet sich im Verzeichnis / Haken-Ordner des Repository, mit dem Namen pre-commit.bat. Wenn Sie ein Minimum an Zeichen benötigen, um die Zeile zu ändern ist
svnlook log %REPOS% -t %TXN% | findstr . > nul
Wenn Sie also ein Minimum von 10 Zeichen wollten, müssen Sie 10 haben. Ist nicht nur ein
svnlook log %REPOS% -t %TXN% | findstr .......... > nul
Mehr erweiterte Optionen für die findstr Befehl lassen Sie ausgefallenere tun Kontrollen (bestimmte Zeichensätze, ect)
Andere Tipps
Ich benutze SubversionNotify , macht es wahrscheinlich mehr als das, was man braucht, aber es ist ziemlich einfach einzurichten .
Versuchen Sie folgendes:
rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2
"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo Your commit has been blocked because you didn't provide a log message 1>&2
echo Please write a log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1
:OK
rem -------------------------------------------------------------
rem Check if comment is in list of reserved words to not be used..
rem -------------------------------------------------------------
"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment
setlocal enabledelayedexpansion
Set SEPARATOR=
set COMMENT=
for /f "delims=" %%a in (comment) do (
set currentline=%%a
set COMMENT=!COMMENT!%SEPARATOR%!currentline!
)
FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null
If %ERRORLEVEL% EQU 1 goto OK2
:Fail
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2
echo Line is -%COMMENT%- 1>&2
echo Please write a proper log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1
:OK2
rem -------------------------------------------------------------
rem Check number of words on the line if = 2 then reject comment
rem -------------------------------------------------------------
Set VAR1=%COMMENT%
Set count=0
For %%j in (%VAR1%) Do Set /A count+=1
IF %count% EQU 2 goto Fail2
goto OK3
:Fail2
echo Your commit has been blocked because not enough detail supplied 1>&2
echo Please write a longer log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1
:OK3
rem -------------------------------------------------------------
rem Check that the author of this commit has the rights to perform
rem -------------------------------------------------------------
rem the commit on the files and directories being modified.
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
rem All checks passed, so allow the commit.
exit 0
Ich habe ein pre-commit Haken , die genau das tun können, was Sie wollen. Plus eine Menge mehr.
- Sie können eine Mindestlänge angeben Kommentar von begehen.
- Sie können den Kommentar gegen einen regulären Ausdruck . Sie können nicht nur eine Länge angeben, aber Sie können auch bestimmte Parameter angeben. Zum Beispiel hat die Commit Kommentar enthält eine Fehlernummer, die Ihre Defect Tracking System verwendet, so dass Sie die Änderung auf einen bestimmten Defekt zurückverfolgen können?
Es erlaubt Ihnen auch folgendes zu tun:
- Stellen Sie verschiedene begehen Berechtigungen gegen bestimmte Dateien oder Verzeichnisse:
- read-write . Der Benutzer kann diese Elemente Kasse und begehen
- read-only :. User finden diesen Artikel Kasse kann aber Änderungen nicht begehen
- Add-only : User ein Verzeichnis über
svn cp
hinzufügen können, aber keine Änderungen. Dies ist ideal für das/tags
Verzeichnis, in dem Sie einen Tag machen dürfen, aber nicht den Tag ändern. - no-löschen :. Benutzer können Änderungen zu übernehmen und neue Dateien hinzufügen, aber diese Dateien nicht löschen
- no-add . Benutzer nur Änderungen übertragen können, und nicht hinzufügen oder löschen, Dateien in einem commit
Und es erlaubt Ihnen auch, dies zu tun:
- Ban bestimmte Dateinamen über reguläre Ausdrücke von Globbing ,
- erfordern bestimmte Dateien oder Verzeichnisse eine bestimmte Eigenschaft auf einen bestimmten Wert festgelegt haben. Sehr nützlich für Dinge wie sicher, dass Skripte Unix-Shell zu machen, Unix Makefiles und Windows Batch-Dateien haben die richtigen Zeilenende oder
svn:ignore
gesetzt, so dass die Benutzer nicht versehentlich Dateien begehen in sie sollten nicht begehen. - erfordern bestimmte Änderungen Eigenschaften mit bestimmten Werten festgelegt werden. Dies ist, wie Sie Nachrichten überprüfen begehen, aber sagen, dass
svn:log
müssen bestimmte reguläre Ausdrücke entsprechen.
Der pre-commit Skript ist in Perl geschrieben. Standardmäßig kommt Perl mit Unix, Mac und Linux-Servern. Leider ist es nicht auf Windows-Computern enthalten. Glücklicherweise gibt es mehrere Open-Source, kostenlos und einfach Perl-Pakete für den PC wie ActivePerl und Strawberry Perl
Unter Windows können Sie die VisualSVNServerHooks.exe check-logmessage
verwenden Haken pre-commit, die mit VisualSVN Server kommt und im %VISUALSVN_SERVER%bin
Verzeichnis. Dieses einfache Tool erhalten Sie die minimal zulässige Anzahl von Zeichen in der Protokollmeldung helfen definieren.
Siehe den Artikel KB140: Validieren von Log-Meldungen in VisualSVN Server Anweisungen verpflichten .