Обновление Subversion Ant займет вечно - PullRequest
2 голосов
/ 18 декабря 2008

Я скачал svntask для ant с tigris.org, так что это "официальный" вариант.

У меня есть простая задача обновить весь мой проект

<target name="prepare">
    <svn username="user" password="pass">
        <update>                
            <fileset dir="."/>
        </update>
    </svn>
</target>

Выполнение этой задачи заняло около 2 часов.

Выполнение svn update в командной строке заняло около 5 секунд.

(в обоих случаях обновления с сервера не происходили)

Я также пытался изменить метод, используемый svntask для взаимодействия с Subversion, я пробовал как метод svnkit, так и метод командной строки.

Есть идеи, почему это может занять так много времени? Очевидно, это недопустимо медленно.

Спасибо

Ответы [ 5 ]

7 голосов
/ 18 декабря 2008

Используя вложенный <fileset>, команда в итоге вызывает update для каждого файла в текущей иерархии каталогов. Наверное, поэтому на это уходит два часа.

Попробуйте использовать атрибут dir задачи update:

    <svn username="user" password="pass">
        <update dir="."/>                                
    </svn>

И, если это не сработает, включите -verbose или -debug и посмотрите, сможете ли вы получить больше информации о том, что происходит во время выполнения задания.

1 голос
/ 18 декабря 2008

1. Какой lib вы используете для доступа к svn (svnkit или javahl)?

Попробуйте явно указать соответствующую библиотеку:

<svn username="user" password="pass" svnkit="true">

2.Я не уверен, нужно ли указывать имя пользователя и пароль для обновления (они были кэшированы при оформлении заказа).

3.Если ваш сценарий использования похож на мой, вы можете повторно использовать оформить заказ задание для оформить заказ и обновление :

<target name="prepare">
  <svn username="user" password="pass">
      <checkout url="${svn.url}" destpath="${svn.path}" />
    </svn>
</target>
0 голосов
/ 18 декабря 2008

Может быть поучительно профилировать свою сборку, чтобы увидеть, где она фактически проводит большую часть своего времени. antutility очень прост в использовании для этой цели. Просто добавьте банку в ваш путь к классам и запустите ее так:

  ant -listener net.java.antutility.BuildMetricsListener [target]
0 голосов
/ 18 декабря 2008

Я не понимаю, почему для svntask это заняло бы 2 часа, поэтому сначала я бы подробнее остановился на этом.

Но если вам нужно, вы можете запустить SVN из командной строки:

<exec executable="cmd.exe">
    <arg line="/c svn checkout repository ..."/>
</exec>

Редактировать: На самом деле, вам не нужно окно DOS, вы можете сделать это напрямую. Я просто делаю это, чтобы видеть вывод в консоли ant.

0 голосов
/ 18 декабря 2008

Так что, если вы просто запустите «Муравьиная подготовка», это займет 2 часа? Или это длительность 2 часа только при особых условиях, таких как ваша сборочная машина?

Вы пытались использовать задачу для сравнения, чтобы попытаться определить, является ли это Ant по сравнению с конкретной задачей?

...