Используйте ant, чтобы удалить все файлы в папке рабочей копии SVN под Mac OS X - PullRequest
2 голосов
/ 04 декабря 2009

Я пытаюсь написать ant-скрипт, который собирает наш проект и сохраняет новую сборку в папке dist, которая передается в svn. Поскольку имя файла меняется для каждой сборки, мне нужно удалить все старые файлы в папке dist (не зная имен).

Для этого я использовал следующий код:

<exec executable="svn" outputproperty="__ignoreSvnDeleteDist">
    <arg value="delete"/>
<arg value="../dist/*"/>
</exec>

Это работает нормально, если я использую его на компьютере с Windows, но как только я пробую его под Mac Os X, я получаю следующую ошибку:

[echo] SVN Delete res: svn: '../dist/*' does not exist

Я сравнил, что я использую одну и ту же версию муравья на обеих машинах (1.7.1) и одну и ту же версию Java (1.6.0_12 для Windows и 1.6.0_15 для Mac).

Ответы [ 3 ]

1 голос
/ 06 декабря 2009

Вместо того, чтобы выполнять команды "svn" самостоятельно, вы можете рассмотреть отличную задачу SvnAnt из проекта Subclipse http://subclipse.tigris.org/svnant.html. Это значительно упрощает обработку задач, связанных с SVN. Код вашей проблемы может выглядеть как

<svn>
  <delete> 
    <fileset dir="../dist">
      <include name="**/*"/>
    </fileset>
  </delete>
  <commit message="commit deleted files" dir="../dist"/>
</svn>
1 голос
/ 04 декабря 2009

Хорошо, после некоторого поиска я нашел ответ. Я думаю, вам нужно помнить, что команда exec не создает оболочку, в которой она выполняет вашу команду, но она будет выполнять команду напрямую?

И * оценивается оболочкой в ​​Unix-подобных системах. В противоположность Windows подстановочный знак вычисляется без интерпретатора командной строки (http://wiki.apache.org/ant/AntOddities).

Этот скрипт должен работать:

<exec executable="sh" outputproperty="__ignoreSvnDeleteDist">
    <arg value="-c"/>
    <arg value="svn delete ../dist/*"/>
</exec>

Здесь мы создаем оболочку и даем ей команду, которую она должна выполнить. К сожалению, теперь это будет работать только в Unix-подобных системах.

0 голосов
/ 04 декабря 2009

Существует простое решение: не передавайте сборки в SVN.

Если ваш процесс сборки слишком хрупок, чтобы можно было воссоздать какой-либо дистрибутив из исходных текстов, вам следует исправить процесс сборки. Рассмотрим настройку CI-сервера, например hudson .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...