2009-03-19 7 views
1

Ich baue ein Ziel in nant, das unser Projekt abzweigt.Wie erkenne ich ein vorhandenes SVN-Verzeichnis in Nant?

Es hat eine Niederlassung in SVN erstellt, überprüft, dass verzweigen, aktualisiert verschiedene Dateien in diesem Zweig mit der neuen Versionsnummer versehen, überprüft sie alle in.

Der SVN Zweig funktioniert das erste Mal (mit der Kopie Befehl URL-> URL), aber wenn es ein zweites Mal ausgeführt wird, kopiert es den Stamm in den BranchName/trunk, anstatt zu versagen zu sagen, dass es bereits existiert.

Gibt es einen vernünftigen Weg für Nant zu erkennen, dass der Zweig bereits existiert und nicht zu versuchen, die SVN-Kopie ein zweites Mal zu tun?

Ich versuche, etwas Intelligenz in das Skript zu bauen, so dass, wenn es ein zweites Mal mit den gleichen Eingaben ausgeführt wird, nichts Schlimmes passiert.

Antwort

1

Hier ist meine letzte Skript:

<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> 

Ich benutzte die -xml Funktion und xmlpeek die Info zu bekommen ich brauchte.

1

Ich weiß nicht, von einer Nant-spezifischen Methode, aber Sie können svn info verwenden überprüfen:

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

gegen

>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: ... 

Bedauerlicherweise ist die Error-ist 0 in jedem Fall aber Sie könnten den --xml Schalter verwenden, wenn es hilft. Oder sehen Sie sich einige .NET-Bindings für Subversion an.

+0

Danke, das gibt mir eine Führung ... +1 –

Verwandte Themen