2013-05-15 206 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