我正在查找clearcase文件夹是否有任何更改。
<Target Name="CheckChanges" Returns="ItemsFromFile">
<Exec Command="cleartool find "$(FolderPath)" -version "{brtype($(StreamName)) && created_since($(FromDate))}" -print >> Changes.log" />
<ReadLinesFromFile
File="Changes.log" >
<Output
TaskParameter="Lines"
ItemName="ItemsFromFile"/>
</ReadLinesFromFile>
</Target>
<Target Name="Build">
<!-- This target should be executed only when Changes.log file has contents -->
<Target>
如果$(FolderPath)有变化,那么内容将在Changes.log中提供。
我想要做的是如果changes.log文件包含一些行,那么运行另一个任务Build应该运行。
如何根据文件中包含内容的条件执行目标?
答案 0 :(得分:1)
我想要做的是,如果
changes.log
文件包含一些行,那么运行另一个任务Build应该运行。
问题是,您正在使用&{39; cleartool find
&#39;重定向>>
的结果。
首次执行该作业将初始化Changes.log
文件,您可以设置另一个作业来测试该文件是否存在(请参阅MSBuild conditions),其大小为非零,以便跑。 (有点像&#34; verify the existence of a folder using the msbuild extension pack?&#34;)
但是第二次执行只会添加行(如果有更改),或保持Changes.log
文件不变。
这意味着&#34; Changes.log
&#34;仍然会有内容&#34;即使cleartool find
没有找到任何更改。
使用&#39; >
&#39;而不是&#39; >>
&#39;可以解决这个问题,因为如果Changes.log
没有检测到任何更改,它会生成一个空的cleartool find
文件,或者如果检测到更改则生成一个非空的文件。