我从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方法和命令行方法。
任何想法为什么这可能需要这么长时间?显然这是令人无法接受的缓慢。
由于
答案 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]