Question

Il me semble être nulle part avec cela. Soit recherche sur le Web pour un script, etc. Quelqu'un at-il un script que vous pouvez éditer le hors-boîte pré-commit.tmpl dans un environnement Windows qui nécessite x caractères à entrer dans un commentaire sur engagement dans Subversion Tortoise à l'échelle mondiale afin que tous les membres de l'équipe sont nécessaires alors que cette exigence est poussé vers le bas aux clients du serveur SVN?

Je ne connais pas le langage de script et ce devrait être quelque chose sacrément simple, sans me prendre le temps de comprendre les scripts pour les 3 prochaines heures.

Était-ce utile?

La solution

Ce fichier .bat pour exiger il y a un commentaire. Il vérifie l'existence d'au moins un caractère dans le commentaire.

 @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

Ce fichier se trouve dans le répertoire / crochets dossier du dépôt, du nom pré-commit.bat. Si vous avez besoin d'un montant minimum de caractères, la ligne à modifier est

svnlook log %REPOS% -t %TXN% | findstr . > nul

Donc, si vous vouliez un minimum de 10 caractères, vous devez avoir 10. Est plutôt qu'un seul

svnlook log %REPOS% -t %TXN% | findstr .......... > nul

options avancées pour la commande du findstr vous permettra de faire colombophile chèques (certains jeux de caractères, ect)

Autres conseils

J'utilise SubversionNotify , il fait probablement plus que ce que vous avez besoin, mais il est assez simple à mettre en place .

Essayez ceci:

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  

Je pre-commit hook qui peut faire exactement ce que tu veux. De plus beaucoup plus.

Il vous permet également d'effectuer les opérations suivantes:

  • Définir diverses autorisations commettras contre des fichiers ou des répertoires particuliers:
    • lecture-écriture . L'utilisateur peut engager la caisse et ces articles
    • en lecture seule . L'utilisateur peut checkout cet objet, mais ne peut pas valider les modifications
    • ajouter uniquement : L'utilisateur peut ajouter un répertoire via svn cp, mais pas commettre tout changement. C'est parfait pour le répertoire où vous /tags autorisé à faire une étiquette, mais pas modifier la balise.
    • sans supprimer :. Les utilisateurs peuvent valider les modifications et ajouter de nouveaux fichiers, mais pas supprimer ces fichiers
    • sans ajouter :. Les utilisateurs ne peuvent valider les modifications, et ne pas ajouter ou supprimer des fichiers dans un commit

Et, il vous permet également de faire ceci:

  • Ban certains noms de fichiers via des expressions régulières de englobement ,
  • Exiger certains fichiers ou répertoires ont une propriété particulière mis à une valeur particulière. Très utile pour des choses comme faire des scripts shell Unix sûr, Makefiles Unix, et les fichiers Windows lots ont la bonne ligne de fin, ou est défini svn:ignore, afin que les utilisateurs ne doivent pas qu'ils COMMIT accidentellement dans des fichiers.
  • Exiger certaines propriétés de révisions à définir avec certaines valeurs. Voici comment vérifier commits, mais en disant que doit correspondre à certaines svn:log expressions régulières.

Ce script pre-commit est écrit en Perl. Par défaut, Perl est fourni avec les serveurs Unix, Mac et Linux. Malheureusement, il ne figure pas sur les ordinateurs Windows. Heureusement, il existe plusieurs open source, gratuit et facile à installer des paquets Perl pour PC tels que ActivePerl et Strawberry Perl

Sous Windows, vous pouvez utiliser le crochet VisualSVNServerHooks.exe check-logmessage pre-commit qui vient avec VisualSVN Server et est situé dans le répertoire %VISUALSVN_SERVER%bin. Cet outil simple vous aidera à définir le nombre minimum de caractères autorisés dans le message du journal.

Voir l'article KB140: Valider le message d'historisation dans VisualSVN serveur pour obtenir des instructions .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top