如何动态显示SVN版本号在网站上?

6
我的网站是 SVN 仓库的检出版本。我的意思是 .svn 文件夹放在了 Web 服务器上,我没有使用 Web 发布。我想在页脚中显示当前项目版本号(整个网站)。我该如何做到这一点?如果我使用 Web 发布,我可以在构建/发布时确定版本,并将其编写为静态 HTML。那么如何动态获取版本?直接读取 .svn 文件?还有更好的方法吗?我看到其他类似的问题,但回答都是使用 SubWCRev.exe,这是不可接受的。编辑:Tarn 提出了关于提交时的 SVN 钩子的有趣想法。还有其他的想法吗?
5个回答

8

使用关键词替换。启用文件的替换,以显示修订信息,并在其中放置关键词,例如$Revision: 144 $

请注意:

$Rev$会扩展显示文件更改的最后一个修订版本,而不是更新到的最后一个修订版本(请参见上面的链接)。如果要显示全局存储库修订号,最好使用svnversion

此外,请参见相关内容


这将显示那个特定文件最后一次更改的修订版本(N)。这与包含网站的部分库上次更改的修订版本(M)不同。 N <= M。 - bendin
@bendin 对了 - 已经相应地更新了答案。这仍然可能是他想要的(“在某个网页上显示当前修订版本”)。 - ax.
谢谢回答!但我需要显示整个网站的修订版本,而不是单独的文件。 - abatishchev
@abatishchev 你可能需要相应地澄清你的问题。 - ax.

2

你可以为SVN编写钩子。你可以编写一个钩子,在检出过程中更新文件并将当前构建作为其中一部分。然后,你可以读取、缓存并在你的网站上显示该构建号码。


谢谢你的想法!你能提供一些关于编写SVN钩子的更多信息吗? - abatishchev
1
Phil Haack在他的博客中介绍了如何使用CaptainHook在.NET中编写SVN钩子。http://haacked.com/archive/2006/07/31/CaptainHookIsOnSourceForge.aspx - tarn

1

1
这是一篇关于如何动态显示 SVN 版本号的网站文章,编号为 645945。 - ax.

1

这个SO上的先前问题有一些讨论,可能对你有用:始终使用SVN提交相同的文件

我总是通过运行一个脚本来完成,该脚本将在我的$Rev$文件中替换注释为当前时间戳。这样,文件内容会更改,Subversion会提交它。有点手动,但你可以编写一个脚本来首先执行此操作,然后执行实际的svn commit命令。


0
我能想到的唯一方法就是使用svn CLI二进制文件并从页面中调用它们。这样,您可以剥离其余部分并获取修订号。但说实话,这是一个有点丑陋的解决方案。

SVN二进制文件 = 用户在命令行上使用的命令,例如'svn update'和类似命令。在命令行上键入'svn help'(不带引号)可以获取可用命令的帮助列表。 - Mark Embling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接