Используйте ANT / SVNANT для удаления файлов из рабочей копии SVN, если они не существуют в другой папке - PullRequest
1 голос
/ 17 декабря 2010

Сценарий:

  • SVN Repo # 1 с базой кода приложения
  • SVN Repo # 2 с предварительно скомпилированными вехами

Мне нужна сборка ANTскрипт, который может выполнять следующие действия:

  1. Экспорт базы кода из репозитория SVN №1 (выполнено)
  2. Скомпилировать базу экспортированного кода (выполнено)
  3. Проверитьбаза кода из репозитория SVN №2 (выполнено)
  4. Сравните скомпилированную / экспортированную базу кода из репозитория № 1 SVN с рабочей копией из репозитория № 2 SVN a.Если какие-либо файлы были добавлены в репозиторий SVN # 1, их необходимо добавить в рабочую копию b.Если какие-либо файлы были обновлены в репозитории SVN # 1, они перезаписывают то, что находится в рабочей копии c.Если какие-либо файлы были удалены из репозитория SVN №2, их необходимо удалить из рабочей копии
  5. Проверить обновленную базу кода в репозитории SVN №2

Шаг № 4это где я сталкиваюсь с проблемами.Я полагаю, что я могу выполнить 4a и 4b, просто скопировав скомпилированную / экспортированную базу кода из SVN-репо № 1 поверх рабочей копии, которая была извлечена из SVN-репо № 2.Я не уверен, как сделать разницу между двумя базами кода, чтобы определить, какие файлы нужно удалить из рабочей копии SVN repo # 2.Я знаю, что могу использовать SVNANT delete для удаления файлов, но как мне создать набор файлов?

1 Ответ

1 голос
/ 20 декабря 2010

Я делал подобные задачи. В моих случаях код муравья выглядит так:

...
<svn.sync to="${svn_folder}" from="${deploy_directory_path}" />
...
<svn svnkit="true" javahl="false">
    <add dir="${svn_folder}" force="true" recurse="true" />
    <!--add>
        <svnFileSet dir="${svn_folder}">
            <svnUnversioned/>
        </svnFileSet>
    </add-->
    <delete>
        <svnFileSet dir="${svn_folder}">
            <svnMissing/>
        </svnFileSet>
    </delete>
</svn>
<svn verbose="true" username="${svn.username}" password="${svn.password}" svnkit="true">
    <commit dir="${svn_folder}" message="${version}"/>
</svn>

где

<macrodef name="svn.sync">
    <attribute name="to" />
    <attribute name="from" />
    <sequential>
        <mkdir dir="@{to}" />
        <sync todir="@{to}" includeemptydirs="true">
            <fileset dir="@{from}" />
            <fileset dir="@{to}" defaultexcludes="no">
                <include name="**/.svn/**/*" />
                <include name="**/.svn/**/*.*" />
            </fileset>
        </sync>
    </sequential>
</macrodef>
...