0

我正面临着 svnant 的问题。<svnModified />完成我的工作副本需要 3 多分钟(svn 元数据版本 1.7:使用来自 HEAD 的最新 svnant)。如果我尝试使用 TortoiseSVN 1.7.12 检查修改,则需要不到 3 秒。如果我从命令提示符执行 svn status ,它也需要不到 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
4

1 回答 1

1

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

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

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

  2. 使用正则表达式过滤输出以保留有关修改文件的有趣行

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

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

于 2013-05-15T12:40:13.023 回答