2013-03-22 28 views
1

我有一個Ant腳本,每次需要部署應用程序時都會執行CVS簽出。 這樣做的理想方法是首先刪除現有的本地代碼,然後執行結帳,但似乎無法刪除項目,因爲我的構建文件也是其中的一部分。 所以我想做一個結賬,我的現有文件將被存儲庫中的文件替換。 有沒有辦法強制一個CVS簽出會覆蓋現有的文件?執行CVS簽出時覆蓋現有文件

我的構建目標看起來像

<target name="deploy.branch" depends="checkPropertyForBranch" if="branchPropertyExist"> 
     <record name="log.txt" action="start" /> 
     <echo message="${release.number}" /> 
     <antcall target="tag.branch" /> 
     <antcall target="checkout.branch" /> 
     <antcall target="stopJboss" /> 
     <antcall target="stopRemoteJboss" /> 
     <sleep seconds="10" /> 
     <antcall target="replaceTag" /> 
     <antcall target="deploy" /> 
     <antcall target="moveConfigFiles" /> 
     <antcall target="promote" /> 
     <parallel> 
      <antcall target="startJboss" /> 
      <antcall target="startRemoteJboss" /> 
     </parallel> 
     <antcall target="waitForWebSite" /> 
     <antcall target="mailSuccessBranch" /> 
     <record name="log.txt" action="stop" /> 
    </target> 

和結賬的目標是像

<target name="checkout.branch"> 
     <tstamp> 
      <format property="CHECKOUT" pattern="M/d/yyyy, hh:mm:SS a, z" locale="en" /> 
     </tstamp> 
     <property name="checkout_start" value="${CHECKOUT}" /> 
     <echo message="CVS checkout of BRANCH: ${branch_tag}" /> 
     <!--<delete dir="${basedir}"/>--> 
     <cvspass cvsroot="cvsroot" password="*****" /> 
     <cvs cvsroot="cvsroot" command="co -r ${branch_tag} project"dest="${checkout.dir}" /> 
    </target> 

的build.xml文件存在於project/scripts/build.xmlbasedir../"project"

回答

2

我認爲比強制cvs checkout更好的辦法就是在結賬前刪除文件。您可以使用<delete/>任務並排除不應刪除的文件。試試這個:

<project name="cvs.test"> 

    <dirname property="base.dir" file="${ant.file.cvs.test}"/> 

    <target name="cvs.checkout" depends="clean"> 
     <!-- here is the checkout --> 
    </target> 

    <target name="clean"> 
     <delete dir="${base.dir}"> 
      <exclude name="build.xml"/> 
     </delete> 
    </target> 

</project> 
+0

我之前嘗試將它作爲結帳目標的一部分,並且只有在結算目標運行時才能正常運行,即。它首先刪除所有文件,然後進行結帳。但是,當整個事情運行,即部署,它不會說「無法刪除目錄」 – Amit 2013-03-22 07:32:59

+0

我也嘗試了一些刪除的變化,因爲我想可能是它的CVS刪除標記。我試過「」,命令以「rm -rf ../../」的形式存儲在屬性文件中。但是這兩個命令都會執行部分刪除並終止構建,並顯示錯誤 – Amit 2013-03-22 07:38:15

+0

您能向我們展示您的項目目錄的構建和結構嗎? – pepuch 2013-03-22 07:59:02

0

檢查將構建腳本放入項目中,然後可以刪除源代碼項目和結帳。

+0

我的build.xml已經是代碼的一部分,它在 – Amit 2013-03-22 07:38:42

+0

檢查你的必要權限刪除的文件? – suspectus 2013-03-22 07:40:55

+0

是的,當我運行我的結帳目標時,它運行良好(刪除和合並)。但是,當部署目標運行後又運行結算目標時,則失敗。 – Amit 2013-03-22 07:45:10