是否有Subversion命令显示当前的修订号?
svn checkout
之后我想启动一个脚本并需要变量中的修订号。如果有像svn info get_revision_number
这样的命令会很棒。
答案 0 :(得分:95)
较新版本的svn支持--show-item
参数:
svn info --show-item revision
有关本地工作副本的修订号,请使用:
svn info --show-item last-changed-revision
您可以使用os.system()
执行如下命令行:
svn info | grep "Revision" | awk '{print $2}'
我在我的夜间构建脚本中这样做。
同样在某些平台上有一个svnversion
命令,但我认为我有理由不使用它。啊,对。您无法从远程存储库获取修订版号,以使用svnversion将其与本地版本进行比较。
答案 1 :(得分:24)
还有一个更方便的(对于某些)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
答案 2 :(得分:5)
首先,svn状态有修订号,你可以从那里阅读。
此外,您存储在SVN中的每个文件都可以存储修订号本身 - 将$Rev$
关键字添加到您的文件并运行propset:svn propset svn:keywords "Revision" file
最后,修订号也在.svn/entries
档,第四行
现在每次签出该文件时,它都会自行修改。
答案 3 :(得分:4)
REV = svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep 'Revision:' | cut -d\ -f2
答案 4 :(得分:2)
svn info
就是你想要的。
如果您只是想要修改,也许您可以执行以下操作:
svn info | grep "Revision:"
答案 5 :(得分:2)
使用类似下面的内容,利用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”,它不会改变,直到当前树中的代码实际发生变化,而不是“Revision”(上面给出的内容),随着存储库中的任何内容发生变化(甚至分支)并且你做了一个“svn up”,这不是一回事,也常常是有用的。
答案 6 :(得分:2)
import subprocess
revision = subprocess.check_output("svn info | awk '/^Revision:/ {print $2}'", shell=True).strip()
如果你想使用python与svn接口,我相信你也可以安装和使用pysvn。
答案 7 :(得分:1)
如果脚本以SubWCRev WC_PATH TPL-FILE READY-FILE
形式调用SubWCRev
我的提交后挂钩示例(部分)
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$
结果,我每次都有bat-file和变量part-name of dir - 对应于Working Copy的元数据
答案 8 :(得分:0)
我想我必须做svn信息然后用“Revision:xxxxxx”中的字符串操作检索数字 如果有一个只返回数字的命令,那就太好了。)
答案 9 :(得分:0)
否则对于旧版本,如果无法识别'--show-item',则可以使用以下命令:
svn log -r HEAD | grep -o -E "^r[0-9]{1,}" | sed 's/r//g'
希望有帮助。