Question

J'ai un référentiel de subversion étendu comme ceci:

Repo
    ProjectA
        trunk
        branches
        tags
    ProjectB
        trunk
        branches
        tags

J'essaie d'écrire un script d'hook post-validation qui s'applique simplement à un projet, mais je viens d'apprendre qu'ils sont logés à la racine du référentiel.

Les deux seuls paramètres que je reçoivent sont le chemin du référentiel et le numéro de révision.Y a-t-il un moyen pour moi d'exécuter ce script pour un projet particulier?

merci,

solution: La solution ultime a fait quelque chose comme ceci:

#!/bin/bash
REPOS="$1"
REV="$2"
if svnlook changed -r $REV $REPOS | grep ProjectA; then
    echo "do stuff"
fi

Était-ce utile?

La solution

Oui, utilisez Svnlook Pour obtenir la liste des fichiers modifiés dans la révision engagée, alors grep sur les noms avec une regex appropriée pour déterminer si le chemin post-validation contient votre nom de projet dans le bon endroit, si cela exécute le code, sinon, saute àla fin du script et le retour 0.

Autres conseils

Je suis venu ici à la recherche de la réponse à cette question pour VisualSVN sur un serveur Windows 2012.Après avoir rassemblé des informations supplémentaires, voici la solution que j'ai proposée pour un fichier Windows Batch Post-STANTE Crochet sur VisualSVN qui charge un script PHP sur un serveur de développement pour que le projet spécifique soit déployé sur ce serveur.La commande Hook est une ligne:

svnlook changed "%1" | findstr /L "ProjectA/trunk/" && powershell -Command "Invoke-WebRequest http://192.168.0.177/checkout_on_commit/checkout_on_commit.php -OutFile $ENV:SYSTEMROOT\Temp\commit.txt" || rem

Le REM était nécessaire en tant que "non-OP" pour empêcher que le crochet soit signalé par la tortue comme échéant pour les engagements à d'autres projets.Le contenu de Checkout_on_Commit.php, qui entraînent le déploiement du projet sur le serveur Linux:

<?php
`date >> checkout.log`;
`svn sw --non-interactive --no-auth-cache --username project_a_readonly --password trytoguess https://svnserver/svn/GroupA/ProjectA/trunk /app/www/ >> checkout.log`;
?>

en subversion n'existe pas une définition comme un "projet" ... La définition doit être effectuée par vous.Cela signifie que Subversion exerce que sur la variation du référentiel et non sur la base "Projet" ...

Vous pouvez utiliser les informations que vous obtenez comme le référentiel et le numéro de révision pour extraire les informations dont vous avez besoin ... Vous pouvez le faire simplement à l'aide de SVNLook pour extraire les informations dont vous avez besoin ... appelant svnlook avec les paramètres appropriés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top