如何以编程方式获取SVN修订号?

7 投票
9 回答
12107 浏览
提问于 2025-04-15 14:42

就像这个问题所提到的,但我不想实际去查询SVN服务器。因为这是一个基于网页的项目,所以我想直接用代码库作为公开的视图(除非有人能告诉我这样做有什么不好的地方)。我猜这些信息应该在某个地方的.svn文件夹里,但具体在哪里呢?我该怎么解析它呢?我想做的事情类似于Stack Overflow,在右下角显示版本号。

如果你手头有Python或PHP的代码,那就太好了,或者给我一个正确的方向也行。

9 个回答

3

接着Lance的说法,这里有一个命令行的一行代码。

svn log -q --limit 1  http://svnbox/path/to/repo/trunk \
| php -r 'fgets(STDIN); preg_match("/(\d+)/", fgets(STDIN), $m); echo $m[0];'
4

我可能会把版本号写到网站的某个文本文件里,使用的是提交后钩子(post-commit hook),然后在加载页面的时候读取这个文件。

这里有更多关于使用钩子的内容

13

Subversion 提供了一个叫做 svnversion 的工具,正是为了这个目的。一个工作副本可能会有本地的修改,或者可能是不同版本的混合。svnversion 知道如何处理这些情况;你可以查看链接中的文档了解具体的例子。

你可以这样在 Python 中调用 svnversion

import subprocess

def svnversion():
    p = subprocess.Popen("svnversion", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    return stdout

撰写回答