当前的Subversion修订版命令

cre*_*ivz 66 svn

是否有Subversion命令显示当前的版本号?

svn checkout我想要启动脚本并需要变量中的修订号之后.如果有像这样的命令会很棒svn info get_revision_number.

Bas*_*Ben 103

较新版本的svn支持该--show-item参数:

svn info --show-item revision
Run Code Online (Sandbox Code Playgroud)

对于本地工作副本的修订号,请使用:

svn info --show-item last-changed-revision
Run Code Online (Sandbox Code Playgroud)

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

svn info | grep "Revision" | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

我在我的夜间构建脚本中这样做.

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

  • 请注意原始问题中有一个`cmd.exe`标记,暗示OP在Windows中,您不能使用`grep`和`awk`. (4认同)
  • 摆脱`grep`:`svn info | awk'/ Revision/{print $ 2; }'` (3认同)
  • 如果你正在调用awk,你可以跳过grep部分:`svn info | awk'/ ^修订版:/ {print $ 2;}'` (3认同)

Sau*_*tis 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
Run Code Online (Sandbox Code Playgroud)

我使用这个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
Run Code Online (Sandbox Code Playgroud)


Kor*_*icz 5

  1. 首先svn状态有修订号,你可以从那里读取它.

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

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

现在,每次签出该文件时,它都会自行修改.