Мрачное свнант
У меня проблема с svnant. <svnModified />
На мою рабочую копию уходит более 3 минут (метаданные svn версии 1.7: с использованием последней версии svnant из HEAD). Если я пытаюсь проверить наличие модификаций с помощью 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
1 ответ
Я не знаю точно, но я думаю, что при использовании svnModified
svn запрашивается для каждого файла в C:/Workspace/projects
, Но при использовании svn status
с помощью командной строки или с помощью TortoiseSVN все происходит в программном обеспечении svn. В первом случае, вероятно, существует множество небольших запросов по одному файлу, во втором случае - только один запрос по всему файловому дереву.
Чтобы улучшить производительность, я могу думать только о следующем:
зовет
svn status
(черезexec
или жеsvnant
задачи) и получить его выводотфильтруйте вывод с помощью регулярного выражения, чтобы сохранить интересные строки об измененных файлах
составьте список имен файлов и используйте
resourcelist
построить коллекцию ресурсов из этого плоского списка имен
Некоторые ссылки, которые могут вас заинтересовать: