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.

War es hilfreich?

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top