Subversion Ant更新任务永远

时间:2008-12-18 15:06:47

标签: svn ant build-process build-automation performance

我从tigris.org下载了svntask for ant,因此它是“官方”的。

我有一个简单的任务来更新我的整个项目

<target name="prepare">
    <svn username="user" password="pass">
        <update>                
            <fileset dir="."/>
        </update>
    </svn>
</target>

运行此任务大约需要2个小时。

在命令行上运行svn update大约需要5秒钟。

(在这两种情况下,没有从服务器关闭的更新)

我也尝试过使用svntask用于与subversion接口的方法,我已经尝试了svnkit方法和命令行方法。

任何想法为什么这可能需要这么长时间?显然这是令人无法接受的缓慢。

由于

5 个答案:

答案 0 :(得分:7)

通过使用嵌套的<fileset>,该命令最终为当前目录层次结构中的每个文件调用update。这可能是为什么需要两个小时。

尝试使用dir任务的update属性:

    <svn username="user" password="pass">
        <update dir="."/>                                
    </svn>

如果这不起作用,请启用-verbose-debug,看看您是否可以获得有关任务期间发生的事情的更多信息。

答案 1 :(得分:1)

1.您使用哪个lib来访问svn(svnkit或javahl)?

尝试明确提供合适的库:

<svn username="user" password="pass" svnkit="true">

2.我不确定您是否必须为更新提供用户名和密码参数(它们在结帐时被缓存)。

3.如果您的用例与我的相似,则可以将结帐任务重新用于结帐更新

<target name="prepare">
  <svn username="user" password="pass">
      <checkout url="${svn.url}" destpath="${svn.path}" />
    </svn>
</target>

答案 2 :(得分:0)

所以,如果你只是运行“蚂蚁准备”需要2小时?或者这只是在你的构建机器这样的特殊条件下持续2小时?

您是否尝试过使用该任务进行比较,尝试隔离是否为Ant与特定任务?

答案 3 :(得分:0)

我不明白为什么svntask花了2个小时,所以我会先详细研究一下。

但如果必须,您可以从命令行运行SVN:

<exec executable="cmd.exe">
    <arg line="/c svn checkout repository ..."/>
</exec>

编辑:实际上,你不需要dos窗口,你可以直接进行。我只是这样做,所以我可以在蚂蚁控制台中看到输出。

答案 4 :(得分:0)

分析您的构建以查看它实际花费大部分时间的位置可能是有益的。 antutility非常容易用于此目的。只需将jar添加到类路径中并运行它:

  ant -listener net.java.antutility.BuildMetricsListener [target]