2009-03-19 5 views
1

Je suis en train de construire une cible dans nant qui branche notre projet.Comment détecter un répertoire SVN existant dans Nant?

Il crée une branche dans SVN, vérifie cette branche, mises à jour différents fichiers au sein de cette branche avec le nouveau numéro de version fournie, il vérifie tout dans.

La branche SVN fonctionne très bien la première fois (en utilisant la copie URL de la commande -> URL), mais s'il est exécuté une deuxième fois, il copie la jonction sur le nom de la filiale/le joncteur plutôt que de dire qu'il existe déjà.

Y at-il un moyen raisonnable pour Nant de détecter que la branche existe déjà et de ne pas essayer de faire la copie SVN une deuxième fois?

J'essaye de construire une certaine intelligence dans le script de sorte que s'il est exécuté une 2ème fois avec les mêmes entrées que rien de mal n'arrive.

Répondre

1

Voici mon script final:

<target name="branchSvn"> 
    <exec program="${svn.executable}" 
    commandline='info ${svn.build.root.path}/branches/${branch.name}/ --xml' output='svn_${branch.name}.xml' /> 
    <xmlpeek file='svn_${branch.name}.xml' xpath='/info' 
    property='branch.info' /> 
    <echo message='${svn.build.root.path}/branches/${branch.name}/ already exists.' 
    if="${branch.info!=''}" /> 
    <delete file='svn_${branch.name}.xml' /> 
    <exec program="${svn.executable}" 
    commandline='copy ${svn.build.root.path}/trunk ${svn.build.root.path}/branches/${branch.name}/ -m "Branched ${branch.name} by nant script."' 
    if="${branch.info==''}" /> 
</target> 

J'ai utilisé la fonction -xml et xmlpeek pour obtenir les informations dont je avais besoin.

1

Je ne sais pas d'une méthode spécifique à Nant, mais vous pouvez utiliser svn info pour vérifier:

>svn info http://svn.host.com/repo/no-such-path 
http://svn.host.com/repo/no-such-path: (Not a valid URL) 

contre

>svn info http://svn.host.com/repo/existing-path 
Path: existing-path 
URL: http://svn.host.com/repo/existing-path 
Repository Root: http://svn.host.com/repo 
Repository UUID: ... 
Revision: ... 
Node Kind: ... 
Last Changed Author: ... 
Last Changed Rev: .. 
Last Changed Date: ... 

Malheureusement, la ERRORLEVEL est 0 dans les deux cas, mais vous pouvez utiliser le commutateur --xml si cela vous aide. Ou regardez certaines liaisons .NET pour Subversion.

+0

Merci, cela me donne un avantage ... +1 –

Questions connexes