Windows pre-commit hook pour la longueur de commentaire Subversion
-
22-08-2019 - |
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.
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
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.
- Vous pouvez spécifier une longueur minimale de commettre un commentaire.
- Vous pouvez faire correspondre le commit commentaire sur un . Non seulement vous pouvez spécifier une longueur, mais vous pouvez également spécifier certains paramètres. Par exemple, ne le commettras commentaire contient un numéro de bug que votre système de suivi des défauts utilise, de sorte que vous pouvez retracer le passage à un défaut particulier?
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 .