我的目标是显示我有哪个工作副本
<target name="svnversion">
<exec executable="svnversion" outputproperty="svnversion" />
<echo message="SVN Version: ${svnversion}" />
</target>
我希望它返回最后没有M或S的数字,无论是否是这种情况,所以如果上面的输出是:17349M
,我希望它返回17349
。我试过了this answer on a different SE。但是,我认为即使这确实有效,但如果M或S不存在,它会减少结束号。
答案 0 :(得分:4)
If the working copy is unusual the version identifier will be more complex: 4123:4168 mixed revision working copy 4168M modified working copy 4123S switched working copy 4123P partial working copy, from a sparse checkout 4123:4168MS mixed revision, modified, switched working copy
你必须处理所有表格
答案 1 :(得分:0)
<outputfilterchain>
可以捕获<exec>
任务的输出,转换输出,并将结果保存在属性中。例如......
<fail unless="wc.dir"/>
<exec executable="svnversion" outputproperty="my-svnversion" failonerror="true">
<redirector>
<outputfilterchain>
<tokenfilter>
<replaceregex pattern="^(\d+)[MS]$" replace="\1"/>
</tokenfilter>
</outputfilterchain>
</redirector>
<arg value="${wc.dir}"/>
</exec>
<echo>my-svnversion: ${my-svnversion}</echo>
为了测试这个脚本,我创建了一个带有修改文件的SVN工作副本......
$ svn st
M test.txt
...并验证了svnversion通常返回的内容......
$ svnversion
1M
运行Ant脚本然后报告...
run:
[echo] my-svnversion: 1
请注意,此脚本不会处理&#34;混合修订工作副本&#34;,&#34;混合修订,修改,切换工作副本&#34;或&#34;部分工作复制,从稀疏结账&#34; Lazy Badger在答案中提到的可能性。