2013-05-15 163 views
0

我面临svnant的问题。 <svnModified />需要3分钟才能完成我的工作副本(svn元数据版本1.7:使用HEAD中的最新svnant)。如果我尝试使用TortoiseSVN 1.7.12检查修改,则需要3秒。如果我从命令提示符执行svn状态,它也需要3秒钟。糟糕的表现

我测试的build文件看起来像这样:

<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="&#xA;" property="target.output" refid="filesets.svn.modified" /> 
    <echo>${target.output}</echo> 
    </target> 

</project> 

我做错什么了吗? 我试着将svnkit升级到最新版本,但没有任何区别。 我是否包括太多或太少的罐子? 其他详情:蚂蚁1.9.0,Windows 7的64,Java的1.7.0_21 64

我的库:

+---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 

回答

1

我不知道是肯定的,但我的猜测是,使用svnModified时,SVN正在查询C:/Workspace/projects下的每个文件。但是当使用命令行或TortoiseSVN使用svn status时,一切都发生在svn软件中。在第一种情况下,可能有很多关于一个文件的小查询,在第二种情况下,关于整个文件树只有一个查询。

为了提高性能,我能想到的唯一的办法就是:

  1. 调用svn status(通过execsvnant任务),并得到其输出

  2. 过滤器正则表达式输出保留有关修改文件的有趣线条

  3. 使其成为文件名列表并使用resourcelist来构建资源集合从名称中和平面列表

您可能感兴趣的一些链接来实现它:

+0

谢谢我希望有另一种方式。如果没有其他人说,否则我会在几天内将其标记为答案。 – EdwTests

+0

作为一个快速跟进:解析来自ant的“svn status”输出(无需额外的自定义任务)是一件痛苦的事情。由于我的整个项目都是基于VS的,所以我切换到了NAnt,事实证明它拥有我需要的一切! – EdwTests