web-dev-qa-db-fra.com

Comment puis-je empêcher les validations de Subversion sans commentaires?

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é?

65
user234518

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/

58
miku

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
20
palacsint

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.

18
Eli Acherkan

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

6
rahulqelfo

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.

6
Amber

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.

6
user7708