Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn Subversion Ant更新任务需要花费很长时间_Svn_Ant_Build Process_Build Automation_Performance - Fatal编程技术网

Svn Subversion Ant更新任务需要花费很长时间

Svn Subversion Ant更新任务需要花费很长时间,svn,ant,build-process,build-automation,performance,Svn,Ant,Build Process,Build Automation,Performance,我从tigris.org下载了ant的svntask,所以它是“官方”的 我有一个简单的任务来更新我的整个项目 <target name="prepare"> <svn username="user" password="pass"> <update> <fileset dir="."/> </update> </svn>

我从tigris.org下载了ant的svntask,所以它是“官方”的

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

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

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

在命令行上运行
svn更新
大约需要5秒钟

(在这两种情况下,都没有要从服务器上下载的更新)

我还尝试了改变svntask用于与subversion接口的方法,我尝试了svnkit方法和命令行方法

你知道为什么要花这么长时间吗?显然,这是令人无法接受的缓慢

谢谢

所以如果你只运行“ant prepare”需要2小时?或者这2小时的持续时间仅在特殊条件下,如您的构建机器


您是否尝试过使用任务进行比较,以尝试和隔离它是Ant还是特定任务?

1.您使用哪个库访问svn(svnkit或javahl)

尝试显式提供适当的库:

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

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

3.如果您的用例与我的类似,您可以将签出任务重新用于签出和更新:


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

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

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


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

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

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

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


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

对构建进行分析,以查看它实际花费了大部分时间的位置,这可能会很有帮助。用于此目的非常容易。只需将jar添加到您的类路径中,并按如下方式运行它:

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