我正面临着svnant的问题。 <svnModified />
需要3分钟才能完成我的工作副本(svn元数据版本1.7:使用HEAD的最新svnant)。如果我尝试使用TortoiseSVN 1.7.12检查修改,则需要3秒钟。如果我从命令提示符执行svn状态,它也需要3秒钟。
我的测试构建文件如下所示:
<project name="tools" default="default" basedir=".">
<path id="paths.classpath">
<fileset dir="." caseSensitive="false">
<include name="svnant/**/*.jar" />
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="paths.classpath" />
<fileset id="filesets.svn.modified" dir="C:/Workspace/projects">
<svnModified />
</fileset>
<target name="default">
<pathconvert pathsep="
" property="target.output" refid="filesets.svn.modified" />
<echo>${target.output}</echo>
</target>
</project>
我做错了吗? 我尝试将svnkit升级到最新版本,但没有任何区别。 我是否包括太多或太少的罐子? 其他细节:Ant 1.9.0,Windows 7 x64,Java 1.7.0_21 x64
我的文章:
+---lib
antlr-runtime-3.4.jar
jna-3.4.0.jar
LICENSE-ANTLR.txt
LICENSE-JAVAHL.txt
LICENSE-JNA.txt
LICENSE-SEQUENCE.txt
LICENSE-SQLJET.txt
LICENSE-TRILEAD.txt
sequence-library-1.0.2.jar
sqljet-1.1.7.jar
svn-javahl.jar
svnant.jar
svnClientAdapter.jar
svnkit-1.7.9.jar
svnkit-cli-1.7.9.jar
svnkit-javahl16-1.7.9.jar
trilead-ssh2-1.0.0-build216.jar
答案 0 :(得分:1)
我不确定,但我的猜测是,当使用svnModified
时,正在查询C:/Workspace/projects
下每个文件的svn。但是当使用命令行或TortoiseSVN使用svn status
时,一切都在svn软件中发生。在第一种情况下,可能有很多关于一个文件的小查询,在第二种情况下,只有一个关于整个文件树的查询。
为了提高性能,我能想到的唯一方法是:
调用svn status
(通过exec
或svnant
任务)并获取其输出
使用regexp过滤输出以保留有关修改文件的有趣内容
将其设为文件名列表,并使用resourcelist
从该平面名称列表构建资源集合
您可能有兴趣实施的一些链接: