Je vois souvent une série de commits, mais aucune notes faisant référence aux billets ... et donc je finirai par retourner et examiner la diffamation manuelle. Pas nécessairement mauvais, mais ce serait bien d'avoir des notes. Des idées? P>
8 Réponses :
Bien sûr, mais comment allez-vous faire respecter des messages de validation non gibbacs, significatifs et contextualisés? P>
Mieux vaut simplement frapper vos collègues irresponsables lorsque vous remarquez un commit boiteux / vide. Ou l'équivalent verbal du poinçon. Assurez-vous simplement qu'ils se sentent mal, il est mérité. P>
Il est vrai qu'un script de pré-validation n'empêchera pas les gens de taper "projet mis à jour" dans la case, mais j'ai vu les messages de validation vont de 90% des messages raisonnables à 90% ici après la mise en oeuvre d'une. Vous devez faire moins de poinçonnage si vous avez un script de pré-validation.
CattleProds sur commande pour juste cet objectif.
Vous pouvez définir un script de crochet de pré-validation qui rejette tous les engagements avec un message de journal vide ou trop court. P>
Voici un post sur la façon de le faire. P>
J'ai utilisé un script de crochet de pré-validation pour vous assurer qu'un commentaire de commettre fait toujours référence à un numéro de numéro dans le système de suivi des émissions. Par exemple, un commentaire tel que
fixes frobulator when the moon is full (bug 1234)
1.6 Inclut maintenant la correspondance REG-EX des numéros de bogues et peut soulever un avertissement si aucun numéro de bogue n'est trouvé (ne le rejetera pas, mais rien que rien).
Notre crkscript de pré-validation (Windows Batch):
@echo off & setlocal ENABLEEXTENSIONS set SVNLOOK="E:\Subversion\Program\Subversion 1.5.0\bin\svnlook.exe" set REPOS=%1% set TXN=%2% set LOGFILE=%REPOS%\hooks\log-%TXN%.txt set GREP=E:\UnxUtils\usr\local\wbin\grep.exe %SVNLOOK% log -t "%TXN%" "%REPOS%" >%LOGFILE% set "first=" for /f "delims=" %%a in ('more ^< "%LOGFILE%"') do ( if not defined first set first=%%a ) del %LOGFILE% if not defined first ( echo "Please supply a commit comment" >&2 & exit 1 ) REM Check for invalid windows characters in the path echo Checking >%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "\" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find ":" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "*" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "?" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find """" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^>" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^<" >>%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^|" >>%LOGFILE% set "first=" for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do ( if not defined first set first=%%a ) del %LOGFILE% if defined first ( echo "Please do not use filename characters which are invalid in windows. - Found %first%" >&2 & exit 1 ) REM Tagblock - prevent changes to tag directories echo Checking >%LOGFILE% %SVNLOOK% changed -t "%TXN%" "%REPOS%" | %GREP% "^U.*\/tags\/.*" | %GREP% -v -f "%REPOS%\conf\tag-block-exceptions.txt" >>%LOGFILE% set "first=" for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do ( if not defined first set first=%%a ) del %LOGFILE% if defined first ( echo "%first% -- Error: Modifications to tag directories are blocked. To allow these modifications add the path to %REPOS%\conf\tag-block-exceptions.txt" >&2 exit 1 )
Pas de tortuevn, mais Subversion elle-même - un paramètre sur le serveur. Vous pouvez créer un crochet de pré-validation qui applique un commentaire commettre. Il existe également des crochets de pré-validation qui vérifieront la présence d'une référence à un système de suivi des problèmes comme Jira si vous souhaitez aller plus loin. P>
Tortoisesvn a la propriété TSVN: logminisize. Si vous définissez cette propriété à par exemple. 10, alors le bouton OK restera désactivé jusqu'à ce que au moins 10 caractères soient entrés comme un message de validation.
+1 pour la suggestion de Stefan. J'ai utilisé des crochets de pré-validation pendant un moment, mais cela évitera que les développeurs se plaignent de ne voir que le message de défaillance de validation après que toutes les modifications ont été envoyées au serveur.
Tortoisesvn est un client, vous voudrez peut-être
C'est le même lien que j'ai initialement marqué lorsque j'ai construit mon script, le seul problème que j'avais est qu'il nécessite un chemin direct pour la fonction d'appel.
Vous devez utiliser un crochet de pré-validation qui est un paramètre de serveur, j'ai écrit un pour VisualSvn, qui est fondamentalement un fichier de parquet - des scripts similaires sont disponibles pour les serveurs SVN basés sur des fenêtres.
@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 rem check for an empty log message call "C:\program files\visualsvn server\bin\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 give any 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
Vous pouvez forcer une commenter facilement suffisamment, mais ce que vous finirez avec un million de commits qui disent "débogage" ou "test". P>
Si vos développeurs ne voient pas la valeur dans l'ajout de messages de validation les forcer à taper quelque chose em> ne va pas changer cela. P>
Ce qui est pire, c'est lorsque les utilisateurs d'Eclipse ont une SVN / CVS intégré de manière à ce qu'il se souvienne de leur dernier message de validation - et ils finissent par commettre un fichier entièrement indépendant avec le message de leur dernière tâche / projet. P>
Vous pouvez toujours rencontrer des problèmes même lorsqu'il nécessite des notes. Beaucoup de gens finissent par mettre "mis à jour" ou similaire. Si vous ne l'avez pas déjà fait, il est utile d'expliquer à tous les développeurs comment ces commentaires peuvent aider à long terme. par exemple. Être capable de voir la motivation pour un changement d'année à partir de maintenant.
Voir aussi Création d'un code de commentaire requis pour Tortoise SVN .