2009-03-19 1 views
1

私は、私たちのプロジェクトを分岐するナントにターゲットを構築しています。Nantの既存のSVNディレクトリを検出するにはどうすればよいですか?

それは新しい提供されるバージョン番号と、そのブランチ内の各種ファイルを更新し、でそれをすべてチェックし、SVNでのブランチを作成し、そのブランチをチェックアウト。

SVNブランチはコピーを用いて微細初めて(作品コマンドURL-> URL)、2回目に実行された場合は、既に存在するとは言わずにBranchName/trunkにトランクをコピーします。

Nantがブランチがすでに存在していることを検出し、2回目にSVNコピーを実行しようとしないようにするには合理的な方法がありますか?

私は何か悪いことが起こらないように同じ入力で2回目に実行されるように、スクリプトにいくつかのインテリジェンスを構築しようとしています。

答えて

1

は私の最後のスクリプトです:

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

私は必要な情報を取得するために-xml機能とxmlpeekを使用しました。

1

私はナント固有の方法を知りませんが、あなたがチェックするsvn infoを使用することができます。

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

残念ながら

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

対は、ERRORLEVELは、いずれの場合も 0ですが、助けがあれば --xmlスイッチを使用できます。あるいは、Subversionのためのいくつかの.NETバインディングを見てください。ここで

+0

ありがとう、これは私にリードを与える... +1 –

関連する問題