【问题标题】:Check current SVN repository version检查当前的 SVN 存储库版本
【发布时间】:2015-05-28 09:48:06
【问题描述】:

我正在尝试弄清楚如何获取当前的 SVN 存储库版本,但没有运气。

当我尝试:

svn info -r BASE

我得到以下信息:

Path: foo-svn
URL: file:///home/hsz/Project/foo-svn
Relative URL: ^/
Repository Root: file:///home/hsz/Project/foo-svn
Repository UUID: b5555486-2e29-45ed-a0bb-b925095964a9
Revision: 10
Node Kind: directory
Last Changed Author: hsz
Last Changed Rev: 10
Last Changed Date: 2015-05-28 11:26:50 +0200 (Thu, 28 May 2015)

所以周围有很多无用的信息。它也因机器语言而异(英语可以强制在命令前加上LANG=en_US)。

但真正的问题是当我提交某事时。输出:

svn commit -m "foo"

是:

Committed revision 11.

svn info 仍显示有关修订版10 的信息。更新项目后即为有效版本。

有什么方法可以在不更新整个项目的情况下获取当前的真实版本号?

编辑更复杂的例子:

  • 用户A调用svn update获取最新版本的项目:r10
  • 用户 A 提交了新的更改,标记为 r11
  • 用户 B 更新项目并提交下一个更改:r12
  • 用户A需要在不更新项目的情况下知道存储库是否有任何变化,所以他调用:

    svn log BASE:HEAD

但它显示了太多的输出:

r10
r11
r12

代替:

r11
r12

因为BASEr10 而不是他最后一次提交的r11

是否可以在本地副本中获取当前版本的编号?在这种情况下,更新和提交后是r11

仅支持 svn 命令,不允许使用 svn update

【问题讨论】:

    标签: svn


    【解决方案1】:

    【讨论】:

    • svnversion 看起来不错,但我只能访问svn 命令(我的意思是,我有我调用的svn 可执行绝对路径,但无法获得其他二进制文件的路径)。
    • @hsz 使用svnversion 是首选方法。但是,您也可以运行 svn update 并检查始终显示 At revision N. 的最后一行
    • 不接受更新项目 - 我只是想通知用户他正在等待即将到来的更新。
    • @hsz 描述您在问题中究竟需要什么。现在我可以推荐svn status --show-updates --verbose
    • 正如我所写 - 我需要当前的本地版本号。更新后我们得到号码x,当我们提交一些东西时,它得到x+1。所以我希望这个 x+1 数字,而不是 svn log 返回的 x
    【解决方案2】:

    要在不首先更新本地副本的情况下获取您的 repo 的最新修订号,请使用 -r HEAD

    svn info -r HEAD
    

    【讨论】:

    • 问题是提交执行后我需要知道当前本地修订号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多