我在一个变量中有两个 git 修订之间的文件更改列表rolloutChanges
-
<exec command="git diff -–name-only ${box.git_version} ${target.git_version}" outputProperty="rolloutChanges" dir="${dir.scratchpad}" />
我不确定理想情况下应该如何迭代这个变量,可能是通过以 phing 可识别的其他标准格式来准备它。
我看到这个答案涉及 foreach 和目标 - https://stackoverflow.com/a/4459526/351903,但没有掌握那里发生的事情。我什至无法在我的设置中运行该解决方案。
我检查了文件集的文档,但没有看到支持变量的任何方式。还检查了这个Copy a whole directory with 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 app/webroot/openx/www/delivery/file1.php
app/webroot/openx/www/delivery/file2.php
是否有一种将 exec 的输出放入列表的本地 phing 方式,以便创建与输出中的文件一样多的元素?