Как скопировать только определенный список файлов из одного каталога в другой, используя phing?

1

У меня есть этот список изменений файла между двумя rolloutChanges git в переменной rolloutChanges -

<exec command="git diff -–name-only ${box.git_version} ${target.git_version}" outputProperty="rolloutChanges" dir="${dir.scratchpad}" />

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

Я видел этот ответ, который включает в себя foreach с целью - qaru.site/questions/1332226/..., но не понял, что там происходит. Я даже не мог запустить решение в своей настройке.

Я проверил документацию для набора файлов, но не вижу способа поддержки переменных. Также проверили эту копию всего каталога с phing

Обновления

Я понял использование foreach и target и поместил его в свой код после команды exec -

<exec command="git diff --name-only ${box.git_version} ${target.git_version}" outputProperty="rolloutChanges" dir="${dir.scratchpad}/${dir.subdir}" />
<foreach list="${rolloutChanges}" param="eachFileToRollout" target="buildlang" />

И у меня есть следующая задача -

<target name="buildlang">
        <echo>Overwriting ${eachFileToRollout} </echo>
    </target>

Теперь переменная rolloutChanges содержит строку, что-то вроде этого (взято из консоли) -

app/webroot/openx/www/delivery/file1.php
app/webroot/openx/www/delivery/file2.php

Таким образом, вывод целевого блока - это (обратите внимание, что в списке есть только один элемент, Overwriting печатается только один раз) -

Overwriting app/webroot/openx/www/delivery/file1.php 
app/webroot/openx/www/delivery/file2.php

Есть ли собственный phing способ поместить вывод exec в список, так что столько элементов создается, как есть файлы на выходе?

Теги:
file-copying
phing
fileset

1 ответ

0
Лучший ответ

Чтобы сделать ваше решение foreach, вам нужно указать разделитель, который является новой строкой в вашем случае.

ForeachTask предоставляет delimiter атрибут (значение по умолчанию: ,). Установите его в &#10; чтобы разделить строку на строки новой строки в стиле Unix. Независимым от платформы значением будет ${line.separator}.

  • 0
    О, я пропустил атрибут delimeter :(. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню