2013-03-22 32 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