如何从SVN工作副本中提取版本和路径到nant变量?

时间:2008-10-10 13:04:29

标签: svn nant svn-repository

我正在为SubNet项目创建一个新的构建过程。

对于我编译的每个dll / exe(通过Nant),我想在构建的dll中包含2个额外的属性。

我已经理解了'asminfo'nant任务的工作原理。但我需要帮助检索我希望嵌入二进制文件中的信息。

构建将始终从完整的工作副本(由构建过程本身检出)发生,因此将始终具有.svn目录。

我想要添加的属性是RepositoryVersion和RepositoryPath。 (我知道这些信息不是svn中的信息名称)

为了做到这一点,我需要提取由BuildFile所在的工作副本文件夹所代表的RepositoryVersion和RepositoryPath。

如何从任何给定的.svn文件夹中将此信息提取到2个nant变量中?

4 个答案:

答案 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版本和路径。 (我实际上假设你正在检查你已经知道路径的项目,但可能并非如此)。

对不起,我不能提供比此更多的信息。