Je voulais modifier un commentaire de journal dans le navigateur du référentiel et j'ai reçu un message d'erreur indiquant qu'aucun hook pré-revprop-change n'existe pour le référentiel. En plus d'avoir un nom effrayant, qu'est-ce qu'un hook pré-revprop-change et comment le créer?
169
Réponses:
Fondamentalement, c'est un script qui est lancé avant que la propriété non versionnée 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 hooks, situés dans le sous-répertoire / hooks (* .tmpl que vous devez modifier et renommer en fonction de votre système d'exploitation, pour l'activer).
la source
svnsync
miroir, le script par défaut devra être modifié, car il n'autorise que les modifications de svn: log. Svnsync change plus que cela, donc je mets simplement unexit 0
là-dedans pour autoriser tous les changements de propriété (car c'est un miroir pour moi seulement).pre-revprop-change
dans le même répertoire et rendez-le exécutable pour l'utilisateur du serveur Web (sous Linux).Pour Windows, voici un lien vers un exemple de fichier de commandes qui autorise uniquement les modifications du message du journal (pas d'autres propriétés):
http://ayria.livejournal.com/33438.html
Copiez le code ci-dessous dans un fichier texte, nommez-le
pre-revprop-change.bat
et enregistrez-le dans le\hooks
sous - répertoire de votre référentiel.la source
Pour que Linux autorise l'édition d'un commentaire de journal,
pre-revprop-change.tmpl
dans lehooks
répertoire de votre référentielpre-revprop-change
www-data
)Edité: (merci à Lindes)
0
pour le type de modifications que vous souhaitez autoriser.la source
Voici le lien vers la question de débordement de pile avec de nombreux hooks courants Types courants de hooks Subversion , y compris la source d'origine du
pre-revprop-change
hook pour Windows posté ici.Vous devriez vous y référer car ils peuvent s'améliorer avec le temps.
la source
Merci #patmortech
Et j'ai ajouté votre code qui "seul le même utilisateur peut changer son code".
la source
Le nom du script hook n'est pas si effrayant si vous parvenez à le déchiffrer: c'est un hook de changement de propriété avant révision . En bref, le but du
pre-revprop-change
script hook est de contrôler les modifications des propriétés non versionnées (révision) et d'envoyer des notifications (par exemple pour envoyer un e-mail lorsque la propriété de révision est modifiée).Il existe 2 types de propriétés dans Subversion:
svn:needs-lock
etsvn:mime-type
) qui peuvent être définies sur des fichiers et des répertoires,svn:log
etsvn:date
) définies sur les révisions du référentiel .Les propriétés versionnées ont un historique et peuvent être manipulées par des utilisateurs ordinaires disposant d'un accès en lecture / écriture à un référentiel. D'autre part, les propriétés non versionnées n'ont pas d'historique et servent principalement à des fins de maintenance. Par exemple, si vous validez une révision, elle obtient immédiatement l'
svn:date
heure UTC de votre validation,svn:author
votre nom d'utilisateur etsvn:log
votre message de journal de validation (si vous en avez spécifié un).Comme je l'ai déjà spécifié, le but du
pre-revprop-change
script hook est de contrôler les modifications des propriétés de révision. Vous ne voulez pas que toutes les personnes ayant accès à un référentiel puissent modifier toutes les propriétés de révision, donc la modification des propriétés de révision est interdite par défaut. Pour permettre aux utilisateurs de modifier les propriétés, vous devez créer unpre-revprop-change
hook.Le crochet simple peut contenir une seule ligne:
exit 0
. Il permettra à tout utilisateur authentifié de modifier toute propriété de révision et il ne doit pas être utilisé dans un environnement réel. Sous Windows, vous pouvez utiliser un script de commandes ou un script basé sur PowerShell pour implémenter une logique dans lepre-revprop-change
hook.Ce script PowerShell permet
svn:log
uniquement de modifier la propriété et refuse les messages de journal vides.Ce script batch permet uniquement à l'utilisateur "svnmgr" de modifier les propriétés de révision:
la source
Pour les utilisateurs de PC: L'extension .bat ne fonctionnait pas pour moi lorsqu'elle était utilisée sur Windows Server maching. J'ai utilisé VisualSvn comme Django Reinhardt l'a suggéré, et il a créé un hook avec une extension .cmd.
la source
(Cette solution a sûrement des inconvénients, car rien n'est vérifié / interdit. Mais pour mon cas - un dépôt local que je n'utilise que moi - cela semble fonctionner.)
la source