2009-07-14 2 views
3

В настоящее время я делаю это:Как обрабатывать только файлы, которые были изменены?

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

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

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

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

ответ

4

Вам необходимо использовать selector на FileSet. Что-то вроде этого:

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

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

5

Задать вопрос 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> 
+0

синхронизации задач работает как шарм! – NorTicUs

Смежные вопросы