У меня есть этот список изменений файла между двумя 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 в список, так что столько элементов создается, как есть файлы на выходе?
Чтобы сделать ваше решение foreach, вам нужно указать разделитель, который является новой строкой в вашем случае.
ForeachTask предоставляет delimiter
атрибут (значение по умолчанию: ,
). Установите его в
чтобы разделить строку на строки новой строки в стиле Unix. Независимым от платформы значением будет ${line.separator}
.