惨淡的表现

时间:2013-05-15 10:30:37

标签: svn ant svnant

我正面临着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="&#xA;" 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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 调用svn status(通过execsvnant任务)并获取其输出

  2. 使用regexp过滤输出以保留有关修改文件的有趣内容

  3. 将其设为文件名列表,并使用resourcelist从该平面名称列表构建资源集合

  4. 您可能有兴趣实施的一些链接: