我有一个项目,其中Subversion的结构如下,
branch
tags
trunk
-- Library
---- Library Code
-- Website
---- Website Code
Library文件夹包含大部分项目代码,是一个类库。 Website文件夹是一个使用该库的网站项目。该网站是部署到实际网站的内容。
我想在网站目录的根目录中自动创建一个文件,该文件存储 trunk 目录的最新版本号。这是可能的,如果可以的话,我该怎么做呢?
Subversion服务器是Windows上的VisualSVN,使用TortoiseSVN和VisualSVN作为客户端。
答案 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的命令行工具,可用于生成所需的值。但是,您仍需要手动执行它。还有一个问题:
如果要将结果存储到存储库中,则必须在提交之前执行它,并且存储的值将始终过时。
如果要保持结果无版本化,则必须在提交后执行。但是它不会被导出。
所以对这个问题没有简单的答案。提案: