去掉 SVN 版本号末尾的字母
Remove letter off the end of SVN Version number
我有目标显示我有哪个工作副本
<target name="svnversion">
<exec executable="svnversion" outputproperty="svnversion" />
<echo message="SVN Version: ${svnversion}" />
</target>
我希望它成为 return 末尾没有 M 或 S 的数字,无论是否是这种情况,所以如果上面的输出是:17349M
,我想return17349
。我尝试过 this answer on a different SE。但是,我认为即使这样做有效,如果 M 或 S 不存在,它也会切断结束编号。
- 您必须记住 所有 种可能的输出版本:它不仅仅是尾随 "M" 或 "S"。来自 svnversion 帮助
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
并且您必须处理所有表格
<outputfilterchain>
可以捕获 <exec>
任务的输出,转换输出,并将结果保存在 属性 中。例如...
<fail unless="wc.dir"/>
<exec executable="svnversion" outputproperty="my-svnversion" failonerror="true">
<redirector>
<outputfilterchain>
<tokenfilter>
<replaceregex pattern="^(\d+)[MS]$" replace=""/>
</tokenfilter>
</outputfilterchain>
</redirector>
<arg value="${wc.dir}"/>
</exec>
<echo>my-svnversion: ${my-svnversion}</echo>
为了测试这个脚本,我用修改过的文件创建了一个 SVN 工作副本...
$ svn st
M test.txt
...并验证了通常使用的 svn 版本 returns...
$ svnversion
1M
运行 然后 Ant 脚本报告...
run:
[echo] my-svnversion: 1
请注意,此脚本不处理 Lazy Badger 在回答中提到的 "mixed revision working copy"、"mixed revision, modified, switched working copy" 或 "partial working copy, from a sparse checkout" 可能性。
我有目标显示我有哪个工作副本
<target name="svnversion">
<exec executable="svnversion" outputproperty="svnversion" />
<echo message="SVN Version: ${svnversion}" />
</target>
我希望它成为 return 末尾没有 M 或 S 的数字,无论是否是这种情况,所以如果上面的输出是:17349M
,我想return17349
。我尝试过 this answer on a different SE。但是,我认为即使这样做有效,如果 M 或 S 不存在,它也会切断结束编号。
- 您必须记住 所有 种可能的输出版本:它不仅仅是尾随 "M" 或 "S"。来自 svnversion 帮助
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
并且您必须处理所有表格
<outputfilterchain>
可以捕获 <exec>
任务的输出,转换输出,并将结果保存在 属性 中。例如...
<fail unless="wc.dir"/>
<exec executable="svnversion" outputproperty="my-svnversion" failonerror="true">
<redirector>
<outputfilterchain>
<tokenfilter>
<replaceregex pattern="^(\d+)[MS]$" replace=""/>
</tokenfilter>
</outputfilterchain>
</redirector>
<arg value="${wc.dir}"/>
</exec>
<echo>my-svnversion: ${my-svnversion}</echo>
为了测试这个脚本,我用修改过的文件创建了一个 SVN 工作副本...
$ svn st
M test.txt
...并验证了通常使用的 svn 版本 returns...
$ svnversion
1M
运行 然后 Ant 脚本报告...
run:
[echo] my-svnversion: 1
请注意,此脚本不处理 Lazy Badger 在回答中提到的 "mixed revision working copy"、"mixed revision, modified, switched working copy" 或 "partial working copy, from a sparse checkout" 可能性。