174 votes

Qu'est-ce qu'un crochet pre-revprop-change dans SVN et comment le créer?

Je voulais éditer un commentaire de log dans le navigateur de dépôt et j'ai reçu un message d'erreur indiquant qu'il n'y a pas de crochet pre-revprop-change pour le dépôt. En plus d'avoir un nom effrayant, qu'est-ce qu'un crochet pre-revprop-change, et comment puis-je le créer ?

16 votes

Maintenant ce lien est le deuxième, juste après un lien vers cette question :)

0 votes

Le lien ci-dessus mène vers le très obsolète livre SVNBook 1.0. Celui actuel est 1.7 et 1.8 (nightly) : svnbook.red-bean.com/en/1.8

212voto

patmortech Points 7482

Pour Windows, voici un lien vers un exemple de fichier batch qui ne permet que les modifications du message de journal (et non d'autres propriétés) :

http://ayria.livejournal.com/33438.html

En gros, copiez le code ci-dessous dans un fichier texte et nommez-le pre-revprop-change.bat puis enregistrez-le dans le sous-répertoire \hooks de votre dépôt.

@ECHO OFF
:: Définir tous les paramètres. Même si la plupart ne sont pas utilisés, au cas où vous voudriez ajouter
:: des modifications qui permettent, par exemple, d'éditer l'auteur ou d'ajouter des messages de journal.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Autoriser uniquement la modification du message de journal, mais pas de l'auteur, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Autoriser uniquement la modification d'un message de journal, pas d'ajout ou de suppression.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Assurez-vous que le nouveau message svn:log n'est pas vide.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Les messages svn:log vides ne sont pas autorisés. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Seules les modifications des messages de svn:log sont autorisées. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Seules les modifications des propriétés de révision de svn:log sont autorisées. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1

37 votes

Pourrait avoir été lié à la version là-bas stackoverflow.com/questions/6155/…. J'ai écrit ce hook et l'ai posté sur le forum SVN il y a un certain temps. Je suppose que j'aurais dû mettre des crédits dans les commentaires du hook.

1 votes

Je suis en train d'utiliser ce script avec VisualSVN 2.0.8 et TortoiseSVN 1.6.11 et cela fonctionne parfaitement.

28 votes

Vous pouvez modifier les hooks dans VisualSVN en cliquant avec le bouton droit sur le nom de votre dépôt dans VisualSVN Server et en sélectionnant "Propriétés...". Vous verrez un onglet "Hooks". Là, vous verrez les différents types de hooks disponibles. Sélectionnez le bon, cliquez sur "Modifier" et collez le code ci-dessus. J'espère que cela aidera les utilisateurs de VisualSVN!

53voto

PW. Points 3052

Fondamentalement, il s'agit d'un script qui est lancé avant qu'une propriété non versionnée ne soit modifiée sur le référentiel, afin que vous puissiez gérer plus précisément ce qui se passe sur votre référentiel.

Il existe des modèles dans la distribution SVN pour différents crochets, situés dans le sous-répertoire /hooks (*.tmpl que vous devez modifier et renommer en fonction de votre système d'exploitation, pour activer).

2 votes

Toutes les instructions se trouvent dans le script du modèle de crochet. Si vous avez besoin du crochet pour un miroir svnsync, alors le script par défaut devra être modifié, car il ne permet que des modifications à svn:log. Svnsync permet plus que cela, donc j'ai simplement mis un exit 0 pour autoriser tous les changements de propriétés (puisque c'est un miroir pour moi seulement).

0 votes

... puis enregistrez-le sous pre-revprop-change dans le même répertoire et donnez-lui les droits d'exécution pour l'utilisateur du serveur web (sous Linux).

11voto

Philibert Perusse Points 1737

Voici le lien vers la question stack overflow avec de nombreux hooks communs Types communs de hooks subversion, y compris la source originale du hook pre-revprop-change pour Windows qui est également publié ici.

Vous devriez vous y référer car ils pourraient être améliorés avec le temps.

8voto

yasin Points 115

Merci #patmortech

Et j'ai ajouté votre code qui "seul le même utilisateur peut modifier son code".

:: Autoriser uniquement la modification du même utilisateur.
for /f "tokens=*" %%a in ( 
'"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %revision% %repository%') do ( 
set orgAuthor=%%a
)
if /I not "%userName%" == "%orgAuthor%" goto ERROR_SAME_USER

2voto

noti Points 109

Pour les utilisateurs de PC : L'extension .bat n'a pas fonctionné pour moi lorsqu'elle a été utilisée sur la machine Windows Server. J'ai utilisé VisualSvn comme Django Reinhardt l'a suggéré, et cela a créé un hook avec une extension .cmd.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X