45 votes

Vérifiez qu'il n'y a pas d'URL de référentiel svn

Ce doit être vraiment une question simple mais de toute façon je ne trouve pas de réponse. Toutes mes excuses si j'ai raté quelque chose saute aux yeux.

Je suis en train d'écrire un script qui permettra d'ajouter un nouveau projet dans le référentiel, basé sur le nom fourni par l'utilisateur. Cela implique d'une Part de vérifier que l'url avec le même nom n'existe pas déjà sur le référentiel.

Dans le référentiel, tous les projets de notre équipe sont stockées dans

https://developernetwork.repo.net/svn/Projects/

Disons que l'utilisateur veut appeler le projet "Calculatrice" et exécute le script. Dans ce cas, nous devons nous assurer que le suivant n'existe pas déjà dans le référentiel

https://developernetwork.repo.net/svn/Projects/Calculator/

Y a t il une commande svn que je peux utiliser pour le réaliser? Malheureusement, je ne vois pas de commande appropriée je peux utiliser dans le svn de la documentation (http://svnbook.red-bean.com/en/1.0/svn-book.html) à tous.

Je vous remercie.

48voto

Stefano Points 5188

Au lieu de vérifier les chaînes de retour, je voudrais simplement vérifier le code de retour:

tous les deux

 svn ls REPOSITORY/PATH
 

et

 svn info REPOSITORY/PATH
 

retourne 0 si tout s'est bien passé, et 1 si les choses se sont mal passées; vous pouvez le vérifier rapidement:

 echo $?
 

dans un script bash, faites simplement quelque chose comme:

 error=$?
if [ $error -ne 0 ]; then
      YOUR ERROR HANDLING
fi
 

fonctionne comme un régal!

46voto

Liwen Points 507

Vous pouvez simplement utiliser

 svn ls https://developernetwork.repo.net/svn/Projects/Calculator/
 

Il vous dira si le référentiel (répertoire) existe ou non.

Mise à jour

pour les répertoires contenant de nombreux fichiers, utilisez:

 svn ls http://server/svn/foo --depth empty
 

9voto

AlexH Points 171

Pour recevoir des informations sur un référentiel existant (par exemple, pour éventuellement enrichir un message d'erreur), vous pouvez également utiliser

 svn info https://developernetwork.repo.net/svn/Projects/Calculator/
 

Pour un projet inexistant, il va simplement retourner

 svn: Could not open the requested SVN filesystem
 

2voto

damithH Points 956

Je suis face au problème ci-dessus et j'ai essayé dans tous les sens. pas de travail pour moi.. si nous avons accès svn avec un chemin d'accès pas dans le svn il a échoué avec l'erreur et le script shell de casser.

Au lieu d'accéder chemin inconnu, ce que j'ai fait est d'obtenir la liste des répertoires du dossier parent et vérifier si la correspondance contiennent ou non.

Obtenez tous les projets de la forme de votre répertoire Parent (si vous voulez trouver une des balises spécifiques, alors votre répertoire parent chemin d'accès doit être https://developernetwork.repo.net/svn/Projects/Calculator/tags)

projects=$(svn ls https://developernetwork.repo.net/svn/Projects/)

ensuite, vérifiez votre dossier de projet existe. N'oubliez pas de l'ajouter / après le nom de votre projet.

projectName="Calculator/"
for i in $projects; do 
    if [ "$i" == "$projectName/" ];
        then
        echo Project Exist
        else
        echo Project does not exist
    fi
done 

simple.

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