2010-12-17 20 views
1

シナリオ:使用ANT/SVNANTはSVN作業コピーからファイルを削除するには

  • SVNレポ以前にコンパイルされたマイルストーンを使用してアプリケーションのコードベース
  • SVNレポ#2と#1

私は次の操作を行うことができANTビルド・スクリプトが必要になります。

  1. 輸出SVNレポ#1からのコードベース
  2. が(行われる)エクスポートされたコードベース
  3. チェックアウトからのコードベースをコンパイルします(行われる)SVNレポ#2(行われる)
  4. はから作業コピーにSVNのレポ#1からコンパイル/エクスポートコードベースを比較SVN repo#2 a。 SVN repo#1にファイルが追加されている場合は、作業コピー bに追加する必要があります。 SVN repo#1で更新されたファイルがあれば、作業コピーにあるファイルを上書きします c。任意のファイルはSVNのレポ#2から削除されている場合、彼らは
  5. チェックSVNレポ#に更新されたコードベースで作業コピーから削除する必要があり、私はに実行していますどこステップ#4が2

問題。 SVN repo#2からチェックアウトされた作業コピーに対して、SVN repo#1からコンパイル/エクスポートされたコードベースをコピーするだけで、私は4aと4bを達成できると信じています。私はどちらのファイルをSVN repo#2作業コピーから削除する必要があるかを判断するために、2つのコードベース間の差分をどのように行うのかよくわかりません。私はファイルを削除するSVNANTの削除を使用することができます知っているが、私はどのようにファイルセットを構築するのですか?

答えて

1

私は同じような仕事をしました。私の例では蟻のコードは以下のようになります。

... 
<svn.sync to="${svn_folder}" from="${deploy_directory_path}" /> 
... 
<svn svnkit="true" javahl="false"> 
    <add dir="${svn_folder}" force="true" recurse="true" /> 
    <!--add> 
     <svnFileSet dir="${svn_folder}"> 
      <svnUnversioned/> 
     </svnFileSet> 
    </add--> 
    <delete> 
     <svnFileSet dir="${svn_folder}"> 
      <svnMissing/> 
     </svnFileSet> 
    </delete> 
</svn> 
<svn verbose="true" username="${svn.username}" password="${svn.password}" svnkit="true"> 
    <commit dir="${svn_folder}" message="${version}"/> 
</svn> 

<macrodef name="svn.sync"> 
    <attribute name="to" /> 
    <attribute name="from" /> 
    <sequential> 
     <mkdir dir="@{to}" /> 
     <sync todir="@{to}" includeemptydirs="true"> 
      <fileset dir="@{from}" /> 
      <fileset dir="@{to}" defaultexcludes="no"> 
       <include name="**/.svn/**/*" /> 
       <include name="**/.svn/**/*.*" /> 
      </fileset> 
     </sync> 
    </sequential> 
</macrodef> 
関連する問題