2017-10-06 3 views
0

J'ai donc un hook post-commit qui déclenche une build sur notre serveur Jenkins. Tout fonctionne, sauf lorsque j'essaie de parcourir les fichiers modifiés dans un repo SVN. Le problème est que le commit se bloque réellement, si je commente la boucle, où les fichiers modifiés sont notés, alors le commit se termine avec succès.Script batch à boucler via les fichiers modifiés SVN

J'ai googlé sur la commande SVN diff qui semble être ce que je veux, en comparant la révision actuelle à la révision HEAD. Cela fonctionne sur la ligne de commande avec des valeurs codées en dur, mais pas dans ma boucle avec les% 1% et% 2% qui sont peuplés de SVN lui-même.

Mon code à ce jour:

@echo off 
setlocal enabledelayedexpansion 

SET REPOS=%1% 
SET TXN=%2% 

for /f "tokens=*" %%a in ('svnlook author -r !TXN! !REPOS!') do set AUTH_NAME=%%a 
SET EMAILS="!AUTH_NAME!"@gmail.com 

SET /a OLDTXN=!TXN! - 1 

for /f "tokens=*" %%a in ('svn diff --summarize -r !OLDTXN!:!TXN! <repo URL>') do (
    set FILES=%%a 
    rem python D:\csvn\data\repositories\Test\hooks\compile_file.py !FILES! 
) 

Où "URL repo" est le repo racine dans SVN I Code dur, ce qui est bien. Maintenant, par exemple, si je commente la ligne SET TXN et le remplacer par une valeur numérique codée en dur telles que:

SET TXN=518 

Les travaux en boucle et je reçois les e-mails désirés avec les fichiers corrects qui ont changé, cela doit être quelque chose autour de la façon dont le TXN est passé de SVN dans le script batch. Il pourrait ne pas être peuplé comme je le pense.

Le script python est mis en commentaire et accepte simplement le fichier en tant qu'argument de ligne de commande et l'envoie par e-mail à un DL. Cela fonctionne, encore une fois, avec une valeur TXN codée en dur comme ci-dessus. Évidemment, ma boucle empêche le commit de se terminer avec succès, mais je ne suis pas sûr de ce que je fais de mal. Mais je suis assez sûr que c'est lié à la variable TXN pour les raisons mentionnées ci-dessus.

Toute aide sur ma question serait grandement apprécié :)

Edit * Changé les variables de %% pour !! comme j'utilise enabledelayedexpansion *

Répondre

0

Ceci est maintenant résolu - si quelqu'un regarde cela pour référence future, le problème était la décrémentation de la variable TXN transmise par SVN. Pour obtenir les changements depuis le dernier commit, j'ai utilisé un autre Commande SVN, au lieu de la commande diff.