自动创建subversion修订文件

时间:2010-01-14 09:42:02

标签: .net svn tortoisesvn visualsvn

我有一个项目,其中Subversion的结构如下,

branch
tags
trunk
-- Library
---- Library Code
-- Website
---- Website Code

Library文件夹包含大部分项目代码,是一个类库。 Website文件夹是一个使用该库的网站项目。该网站是部署到实际网站的内容。

我想在网站目录的根目录中自动创建一个文件,该文件存储 trunk 目录的最新版本号。这是可能的,如果可以的话,我该怎么做呢?

Subversion服务器是Windows上的VisualSVN,使用TortoiseSVN和VisualSVN作为客户端。

4 个答案:

答案 0 :(得分:3)

由于您使用的是TortoiseSVN,我建议您使用SubWCRev代替svnversion。

答案 1 :(得分:1)

嗯,包含修订号的通常方法是放

$Revision$

如果属性svn:keywords属性包含Revision,则在提交时展开的源文件中的某处。

这只会在上次提交该文件时提供修订号,但不是当前的HEAD修订号。

在过去的项目中,我使用了一个调用命令行subversion程序的小脚本来提取当前的修订版号。您可以调用svn info并获取各种信息,包括工作副本的修订号。当您在该目录或其父目录之一上执行更新时,以及在文件实际更新时对文件进行更新,以便它可能不完全准确。然而,对我来说这已经足够了,因为我还是只更新了顶级文件夹:

>svn info trunk | findstr /r /c:"^Revision"
Revision: 14466

答案 2 :(得分:0)

查看svn info命令。在项目中将其作为前/后构建事件运行将获得所需的信息(以及一些其他信息)。然后,您需要将修订号写入文件。 (如果这样做,请确保SVN忽略此文件,否则它将进入文件更改的无限循环,您检查它,更改文件等...

答案 3 :(得分:0)

有一个名为svnversion的命令行工具,可用于生成所需的值。但是,您仍需要手动执行它。还有一个问题:

  1. 如果要将结果存储到存储库中,则必须在提交之前执行它,并且存储的值将始终过时。

  2. 如果要保持结果无版本化,则必须在提交后执行。但是它不会被导出。

  3. 所以对这个问题没有简单的答案。提案:

    1. 拥有 version.txt 文件或$Revision$ keyword的任何文件。
    2. 如果 version.txt 尚未修改,请写一个拒绝提交的pre-commit hook script
    3. (可选)编写TortoiseSVN client-side hook script以在提交前自动修改文件。