Quelqu'un sait-il comment empêcher les validations dans un référentiel de code Subversion quand aucun commentaire de validation n'est entré?
Vous pouvez utiliser un crochet (mettez-le dans <repository>/hooks
et nommez-le pre-commit.bat
(Les fenêtres)):
@echo off
::
:: Stops commits that have empty log messages.
::
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
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
src: http://www.anujgakhar.com/2008/02/14/how-to-force-comments-on-svn-commit/
Voici un crochet de pré-validation avec le message d'erreur détaillé de @ miku pour Linux:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > /dev/null
GREP_STATUS=$?
if [ $GREP_STATUS -ne 0 ]
then
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
fi
exit 0
En fait, lorsque vous créez un référentiel Subversion, son sous-répertoire hooks
contient déjà des exemples de hook. Découvrez celui appelé pre-commit.tmpl
pour plus de détails sur les paramètres du crochet. Il contient également un exemple de crochet que vous recherchez:
#!/bin/sh
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/local/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > /dev/null || exit 1
Vous pouvez écrire votre hook dans n'importe quel script ou langage, tant qu'il est exécutable sur votre machine Subversion.
Script Linux pour plus de 15 caractères -
#!/bin/bash
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
# Comments should have more than 5 characters
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep [a-zA-Z0-9] | wc -c)
if [ "$LOGMSG" -lt 15 ];
then
echo -e "Please provide a meaningful comment when committing changes." 1>&2
exit 1
fi
Source - http://Java.dzone.com/articles/useful-Subversion-pre-commit
Créez un hook de pré-validation. Voici quelques instructions sur la façon de le faire vous-même, ou ici est un exemple de script de hook qui rejettera tout ce qui contient un message de validation de moins de 10 caractères.
Si vous utilisez uniquement TortoiseSVN, vous pouvez ajouter la propriété de TortoiseSVN au répertoire racine: nom de la propriété: tsvn:logminsize
valeur: 1
Cela désactivera le bouton OK dans la fenêtre de validation de TortoiseSVN, puis le message sera vide. Veuillez noter que cette propriété est spécifique à TortoiseSVN et qu'elle pourrait ne pas fonctionner avec un autre client SVN.