Stackoverflow站点上的SVN修订号(右下)

Stackoverflow站点上的SVN修订号(右下),svn,Svn,如何使我的SVN修订号在每次提交时都出现在我的网站上?基本上,您需要在命令行上执行SVN info,然后解析输出(因此在服务器上发生这种情况)。看看这个例子 svn info的输出如下所示: Path: . URL: http://continuum.td.foo.com/svn/EngTools/Atom/trunk/aimv-test-daemon Repository Root: http://continuum.td.foo.com/svn Repository UUID: 69079f

如何使我的SVN修订号在每次提交时都出现在我的网站上?

基本上,您需要在命令行上执行
SVN info
,然后解析输出(因此在服务器上发生这种情况)。看看这个例子

svn info的输出如下所示:

Path: .
URL: http://continuum.td.foo.com/svn/EngTools/Atom/trunk/aimv-test-daemon
Repository Root: http://continuum.td.foo.com/svn
Repository UUID: 69079f5b-ed1a-0410-902f-f9949c1bbd36
Revision: 107090
Node Kind: directory
Schedule: normal
Last Changed Author: johndoe
Last Changed Rev: 107006
Last Changed Date: 2009-07-09 15:21:17 -0700 (Thu, 09 Jul 2009)

假设您不想运行daemon或exec,您只需在更新您的build
svn info>svnbuild.info
并对其进行解析后,将内容转储到某个已知文件中,您必须在要跟踪其修订的文件中包含类似于
$Revision$
,例如
foo.html
,并告诉Svn跟踪并替换文件中的关键字,即:

svn propset svn:keywords "Revision" foo.html

然后,当文件更改时,Svn将该表达式更改为
$Revision:23
或任何版本号。(当然,你也可以在其他文件中这样做,但是——取决于你如何构建你的网站——你必须从每个感兴趣的文件中获取信息,并将其添加到你正在显示的页面中,例如通过模板或其他方式)。

在这里假设使用PHP,但你可以用任何服务器端语言轻松做到这一点

<?PHP
$revString = '$Revision$'; // Subversion will substitute something like $Revision: <number> $
$revNum = magic($revString); // magic parses the integer number out of the string.
echo "Subversion revision: $revNum";

看起来像是将其嵌入到页面中(“查看此页面上的源代码”):

svn修订版:4999
我可以在Windows上通过查看存储库的日志来获得它。您不会说您正在使用什么操作系统,也不会说您是否可以访问命令shell


检查所需的命令。

假设使用Java和Ant,您可以使用任务查询存储库并将信息存储到一些Ant属性中。这不仅可以方便地获取修订号,还可以方便地获取标记/分支名称


您可以看到一个

重复:重复:值得强调的是,在单个文件中使用
$Revision$
不会在对其他文件进行更改时自动更新其值。您认为我的回答中强调得不够吗?我把它放在第一行,最后放在括号里……我只是经常把这个问题看作是“经常遇到的意外结果”,所以可能需要用白纸黑字来说明。它们使用C#,所以可能是全局类中的某个变量。
<div id="svnrev">svn revision: 4999</div>