ANT を使用して、SVN からコードをチェックアウトできました。しかし、すべてのフォルダーではなく、一部のフォルダーのみをチェックアウトしたいと考えています。私のSVNにはFolder1、Folder2、およびFolder3があるとしますが、Folder1とFolder2のみをチェックアウトしたいとします。ANTを使用してそれを行う方法はありますか?
2 に答える
最初にいくつか質問します。なぜアリを使うのですか?COBOL で行うこともできますが、それは良い考えではありません。一般的に、ソースを処理するために ANT を使用すると、悪臭がします。Ant ファイルはソース管理にあるはずなので、ニワトリと卵のパラドックスの問題が発生します。コードなしでコードをチェックアウトするにはどうすればよいでしょうか。
プロジェクト内のフォルダーのサブセットをチェックアウトする必要があるのはなぜですか? リポジトリのレイアウトを変更することでメリットが得られるようです。Folder1、Folder2、および Folder3 は、独自のブランチ、タグ、およびトランクを持つ必要がある一意のプロジェクトですか? SO には、svn レイアウトに関する適切な質問と回答が多数あります。一般に、Folder1 と Folder2 が一緒にリリースされていない場合、それらは異なる svn プロジェクトです。
あなたの質問に答えるために: svnant checkoutを使用して同じレベルでディレクトリのサブセットをチェックアウトすることはできません。または、exec タスクを使用して svn クライアントを呼び出すと、Folder1 と Folder2 に対して別々のチェックアウトを行う必要があります。
Ant を使用してコードをチェックアウトすることもできますが、私はそれが好きではありません。
まず、 をチェックアウトするという問題があるbuild.xml
ため、それを実行して残りのコードをチェックアウトできます。build.xml
また、チェックアウト自体が更新された場合はどうなりますか?
私の主張は、ビルドには Ant を使用するべきであり、物事をより適切に実行できる他のツールに任せるべきだということです。
必要なことを行うには、次のコマンドラインを使用できます。
svn co --depth=none $REPO_LOCATION
svn up --set-depth=infinity Folder1
svn up --set-depth=infinity Folder2
これは、Windows バッチ スクリプトまたは Unix シェル スクリプト、または Ant ビルド ファイル内に配置することもできます。
<exec executable="svn">
<arg line="co --depth=none ${env.REPO_LOCATION}/>
<exec/>
<exec executable="svn"
<arg line="up --set-depth=infinity Folder1"/>
</exec>
<exec executable="svn"
<arg line="up --set-depth=infinity Folder2"/>
</exec>
Subversion ant タスク プラグインがありますが、それを機能させるのは難しい場合があり、とにかく SVN コマンドを直接実行するだけだと思います。