当前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
-
首先svn状态有修订号,你可以从那里读取。
-
另外,您在SVN中存储的每个文件都可以存储版本号 – 将
$Rev$
关键字添加到您的文件并运行propset:svn propset svn:keywords "Revision" file
-
最后,修订号也在
.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”这将是很好,如果有一个命令,只返回数字:)