当前Subversion修订命令

是否有一个Subversion命令来显示当前版本号?

svn checkout我想启动一个脚本,并在一个variables中需要版本号。 如果有像svn info get_revision_number这样的命令,那将会很棒。

你可以使用os.system()来执行这样的命令行:

 svn info | grep "Revision" | awk '{print $2}' 

我在每晚构build脚本中都这样做。

另外在一些平台上有一个svnversion命令,但我想我有一个不使用它的理由。 啊,对。 您无法从远程存储库获取修订版本号,以使用svnversion将其与本地版本库进行比较。

还有一个更方便的(对于一些) svnversion命令。

输出可能是单个版本号或类似的东西(从-h):

  4123:4168 mixed revision working copy 4168M modified working copy 4123S switched working copy 4123:4168MS mixed revision, modified, switched working copy 

我使用这个python代码片段来提取修订信息:

 import re import subprocess p = subprocess.Popen(["svnversion"], stdout = subprocess.PIPE, stderr = subprocess.PIPE) p.wait() m = re.match(r'(|\d+M?S?):?(\d+)(M?)S?', p.stdout.read()) rev = int(m.group(2)) if m.group(3) == 'M': rev += 1 
  1. 首先svn状态有修订号,你可以从那里读取。

  2. 另外,您在SVN中存储的每个文件都可以存储版本号 – 将$Rev$关键字添加到您的文件并运行propset: svn propset svn:keywords "Revision" file

  3. 最后,修订号也在.svn/entries文件中,第四行

现在,每次签出该文件时,都会有修改。

REV = svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep 'Revision:' | cut -d\ -f2 svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep 'Revision:' | cut -d\ -f2

svn info ,我相信,就是你想要的。

如果你只是想修改,也许你可以做一些事情:

 svn info | grep "Revision:" 

使用类似下面的内容,利用subversion的XML输出:

 # parse rev from popen "svn info --xml" dom = xml.dom.minidom.parse(os.popen('svn info --xml')) entry = dom.getElementsByTagName('entry')[0] revision = entry.getAttribute('revision') 

还要注意,根据你所需要的, <commit revision=...>条目可能更符合你的要求。 这就给出了“Last Changed Rev”,直到当前树中的代码实际发生变化才会改变,而不是“修订版”(上面给出的),随着版本库中任何东西的改变(甚至分支)你做一个“svn up”,这不是一回事,也不经常是有用的。

刚刚在修改后的版本中使用@ badcat的答案,使用subprocess.check_output subprocess.check_output()

 import subprocess revision = subprocess.check_output("svn info | awk '/^Revision:/ {print $2}'", shell=True).strip() 

我相信你也可以,安装和使用pysvn,如果你想使用python与svn接口。

没有人提到Windows世界SubWCRev ,正确使用,可以自动replace需要的数据到所需的地方,如果脚本调用SubWCRev的formsSubWCRev WC_PATH TPL-FILE READY-FILE

我的post-commit钩子的示例(部分)

 SubWCRev.exe CustomLocations Builder.tpl z:\Builder.bat ... call z:\Builder.bat 

我的Builder.tpl是

 svn.exe export trunk z:\trunk$WCDATE=%Y%m%d$-r$WCREV$ 

结果,我每次都有可变部分名称的蝙蝠文件 – 对应于工作副本的元数据

我想我必须做svn信息,然后检索数字与string操作从“版本:xxxxxx”这将是很好,如果有一个命令,只返回数字:)