我有目标来显示我有的工作副本
<target name="svnversion">
<exec executable="svnversion" outputproperty="svnversion" />
<echo message="SVN Version: ${svnversion}" />
</target>
我希望它返回结尾不带m或S的数字,不管情况是否如此,所以如果上面的输出是:17349M
,我希望它会返回17349
。我曾在另一个SE上尝试过这个答案。然而,我认为即使这确实有效,在M或S不存在的情况下,它也会截断结束数。
- 您必须记住输出的所有可能版本:它不仅仅是尾随"M"或"s"。来自sversion帮助
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
你必须处理所有的表格
-
从技术上讲,管道到grep将允许您检测,您有哪种类型的WC
-
毕竟,阅读一下sed,它将允许您执行任何所需的转换,如果您能够描述它的话
<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
并验证了sversion通常返回的内容。。。
$ svnversion
1M
运行Ant脚本后报告。。。
run:
[echo] my-svnversion: 1
请注意,该脚本不处理Lazy Badger在回答中提到的"混合修订工作副本"、"混合修订、修改、切换工作副本"或"稀疏签出的部分工作副本"的可能性。