Как я могу обрабатывать только файлы, которые были изменены? - PullRequest
3 голосов
/ 14 июля 2009

На данный момент я делаю это:

<delete dir="${RSA.dir}/file1" />
<copy todir="${RSA.dir}/file1" >
    <fileset dir="${CLEARCASE.dir}/file1" />            
</copy>

и повторение того же самого для других файлов - но это занимает много времени.

Я хочу только удалять и копировать файлы, которые были обновлены, с указанием даты их изменения в открытом регистре позже, чем в RSA.

Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

Просмотрите задачу sync .

Если вы хотите сделать это на основе содержимого файла и игнорировать метку времени, я думаю, этот макрос сделает это:

<macrodef name="mirror" description="Copy files only if different; remove files that do not exist in dir. This works similiar to robocopy /MIR." >
    <attribute name="dir"/>
    <attribute name="todir"/>
    <sequential>
        <copy overwrite="true" todir="@{todir}">
            <fileset dir="@{dir}">
                <different targetdir="${todir}"/>
            </fileset>
        </copy>
        <delete includeemptydirs="true">
            <fileset dir="@todir}">
                <present targetdir="${dir}" present="srconly"/>
            </fileset>                
        </delete>
    </sequential>
</macrodef>
4 голосов
/ 14 июля 2009

Вам необходимо использовать селектор в FileSet. Примерно так:

<fileset dir="${your.working.dir}/src/main" includes="**/*.java">
    <different targetdir="${clean.clearcase.checkout}/src/main"
        ignoreFileTimes="false"
        ignoreContents="true" />
</fileset>

Это сравнивает ваш рабочий каталог с чистой проверкой, которую вы имеете в другом месте, и возвращает файлы, последние измененные времена которых были изменены. Вы можете использовать набор файлов в качестве аргумента для <delete> или <copy>.

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