2010-12-17 33 views
1

場景:使用ANT/SVNANT刪除從SVN工作拷貝文件,如果在另一個文件夾不存在,

  • SVN回購#1與應用程序代碼
  • SVN回購#2與先前編譯里程碑

我需要一個Ant構建腳本,可以做到以下幾點:

  1. 出口從SVN回購#1的代碼庫(完成)
  2. 編譯導出代碼庫(完成)
  3. 退房從代碼庫的SVN回購#2(完成)
  4. 從SVN回購#1編譯/導出代碼庫進行比較,從工作副本SVN回購#2 a。如果在SVN回購#1中添加了任何文件,則需要將它們添加到工作副本 b。如果SVN回購#1中的任何文件已更新,它們將覆蓋工作副本 c中的內容。如果有任何文件已從SVN回購#2移除,他們需要從工作拷貝
  5. 檢查在更新的代碼庫到SVN回購#刪除2

第4步是在那裏我遇到了的問題。我相信我可以通過從SVN回購#1中複製已編譯/導出的代碼庫來完成4a和4b,而不是從SVN回購#2中檢出的工作副本。我不確定兩個代碼庫之間的差異如何確定哪些文件需要從SVN repo#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> 
相關問題