Comment définir un déclencheur pour empêcher commits SVN avec la propriété mergeinfo?

StackOverflow https://stackoverflow.com/questions/2004981

  •  18-09-2019
  •  | 
  •  

Question

Je voudrais éviter de créer svn mergeinfo sur quoi que ce soit, mais la racine des branches. Nous avons une branche de tronc et d'autres branches.

En supposant que je ne sais absolument rien sur les déclencheurs svn, quelles mesures dois-je suivre pour construire un crochet pre-commit qui empêche les ajouts de propriétés mergeinfo à quoi que ce soit, mais la racine des branches?

Le coffre est situé dans la base "/ trunk" du dépôt, et toutes les branches sont dans "/ branches / foo"

Était-ce utile?

La solution

En gros, vous devez définir un SVN pre-commit crochet . Mais d'abord, lisez crochets général.

Vous voudrez probablement commencer par copier le fichier pré-commit.tmpl à pre-commit, et mettre en œuvre la logique là-dedans.

Vous voudrez probablement examiner la diff de la transaction en cours d'exécution pour les lignes comme:     Ajouté: svn: mergeinfo

Depuis les informations sur ce fichier qui a été ajouté pour est sur une autre ligne, vous pouvez avoir besoin d'un outil de traitement plus complexe que grep -. Peut-être un simple script perl

Lorsque vous déterminez qu'une transaction a une propriété supplémentaire que vous ne voulez pas, vous pouvez bloquer la validation; ou, si vous êtes particulièrement audacieux, vous pouvez essayer de modifier la transaction et continuer.

Autres conseils

Ce qui suit devrait fonctionner. Votre dépôt a déjà le svn: mergeinfo sur le tronc, vous ne voudrez plus jamais quelqu'un d'ajouter un nouveau.

Par ailleurs, notre crochet réelle assure que tous les commits est accompagné d'un message de journal et protège également contre la suppression de certains de nos importants répertoires de niveau supérieur via un navigateur repo.

@echo off

set logfile=%TEMP%\%2.txt

"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==UU goto checkmergetracking
)

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==_U goto checkmergetracking
)

del %logfile%
exit 0

:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo

del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1

:nomergeinfo
del %logfile%
exit 0
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top