0

我正在编写从 svn repo 更新的 ant 脚本。但是,如果我首先没有从 repo 手动完成结帐,则更新不起作用。

我希望 svnant 执行以下操作:如果 svn checkout 完成,则更新,否则执行 svn checkout 并更新。

4

1 回答 1

2

这里有两种方法 - 方法 1、方法 2(使用 bash 中的 if 语句来缩短然后笨拙的 ant 属性)。如果有 .svn 文件,两者都有相同的想法,那么这意味着我们正在结帐并且我们只更新,如果 .svn 丢失,我们确实需要进行结帐。

<?xml version="1.0"?>
<project>
  <target name="check-svn">
    <available file=".svn" property="svn.present"/>
  </target>
  <target name="method1">
    <antcall target="svnup"/>
    <antcall target="svnco"/>
  </target>
  <target name="svnup" depends="check-svn" if="svn.present">
    <exec executable="echo">
      <arg value="svn update"/>
    </exec>
  </target>
  <target name="svnco" depends="check-svn" unless="svn.present">
    <exec executable="echo">
      <arg value="svn checkout"/>
    </exec>
  </target>
  <target name="method2">
    <exec executable="bash">
      <arg value="-c"/>
      <arg value="if [ -e .svn ];then echo svn update; else echo svn checkout; fi"/>
    </exec>
  </target>
</project>

重击方式:

([ -e .svn ] && echo svn update) || echo svn checkout
于 2012-07-12T19:14:53.697 回答