如何以编程方式获取SVN修订号?
就像这个问题所提到的,但我不想实际去查询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