我正在为SubNet项目创建一个新的构建过程。
对于我编译的每个dll / exe(通过Nant),我想在构建的dll中包含2个额外的属性。
我已经理解了'asminfo'nant任务的工作原理。但我需要帮助检索我希望嵌入二进制文件中的信息。
构建将始终从完整的工作副本(由构建过程本身检出)发生,因此将始终具有.svn目录。
我想要添加的属性是RepositoryVersion和RepositoryPath。 (我知道这些信息不是svn中的信息名称)
为了做到这一点,我需要提取由BuildFile所在的工作副本文件夹所代表的RepositoryVersion和RepositoryPath。
如何从任何给定的.svn文件夹中将此信息提取到2个nant变量中?
答案 0 :(得分:3)
首先,您可以使用“svn info --xml> out.xml”将svn信息获取到文本文件。然后,您可以使用Nant xml-peek将文件中的值转换为变量。
<xmlpeek file="out.xml" xpath="/info/entry/url" property="svn.url" />
答案 1 :(得分:2)
我就是这样做的修订号:
<exec
program="svn"
commandline='log "${solution.dir}" --xml --limit 1'
output="${solution.dir}\_revision.xml"
failonerror="false"/>
<xmlpeek
file="${solution.dir}\_revision.xml"
xpath="/log/logentry/@revision"
property="version.revision"
failonerror="false"/>
<delete file="${solution.dir}\_revision.xml" failonerror="false"/>
答案 2 :(得分:0)
我建议您将svn keywords作为属性嵌入到构建文件中。例如:
<property name="RepositoryPath" value="$HeadURL$" />
<property name="RepositoryVersion" value="$Revision$" />
答案 3 :(得分:-1)
.svn目录中的条目实际上并不是要直接访问。我不太了解你在做什么,但我建议你使用你用来检查项目的机制来找到HEAD版本和路径。 (我实际上假设你正在检查你已经知道路径的项目,但可能并非如此)。
对不起,我不能提供比此更多的信息。