3

我正在为要在 Subversion 中举行的 DotNet 项目创建一个新的构建过程。

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

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

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

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

为此,我需要提取由 BuildFile 所在的工作副本文件夹表示的 RepositoryVersion 和 RepositoryPath。

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

4

4 回答 4

3

首先,您可以使用“svn info --xml >out.xml”将 svn 信息保存到文本文件中。然后,您可以使用 Nant xml-peek 将文件中的值放入变量中。

<xmlpeek file="out.xml" xpath="/info/entry/url" property="svn.url" />
于 2008-10-10T13:14:37.210 回答
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"/>
于 2008-10-20T17:26:00.427 回答
0

我建议您将svn 关键字作为属性嵌入到您的构建文件中。例如:
<property name="RepositoryPath" value="$HeadURL$" />
<property name="RepositoryVersion" value="$Revision$" />

于 2008-10-10T13:21:11.160 回答
-1

.svn 目录中的条目实际上并不意味着可以直接访问。我不太了解您在做什么,但我建议您使用用于签出项目的机制来查找 HEAD 版本和路径。(我实际上假设因为您正在检查您已经知道路径的项目,但也许事实并非如此)。

抱歉,我不能提供比这更多的信息。

于 2008-10-10T13:10:04.643 回答