我能让“svn信息”告诉我最旧的版本,而不是最新的吗?

我能让“svn信息”告诉我最旧的版本,而不是最新的吗?,svn,Svn,我有一个PHP脚本,它通过检查SVN下的目录自动生成项目发布历史,特别是那些与模式^/*/tags/*匹配的目录 e、 g …等等 除此之外,该脚本还解析svn info的输出: [tomalak@cat ~]$ svn info https://localhost/svn/myproject/tags/v8-11/ Path: v8-11 URL: https://localhost/svn/myproject/tags/v8-11 Repository Root: https://local

我有一个PHP脚本,它通过检查SVN下的目录自动生成项目发布历史,特别是那些与模式
^/*/tags/*
匹配的目录

e、 g

…等等

除此之外,该脚本还解析
svn info
的输出:

[tomalak@cat ~]$ svn info https://localhost/svn/myproject/tags/v8-11/
Path: v8-11
URL: https://localhost/svn/myproject/tags/v8-11
Repository Root: https://localhost/svn
Repository UUID: ***
Revision: 15198
Node Kind: directory
Last Changed Author: ***
Last Changed Rev: 15192
Last Changed Date: 2013-06-17 12:31:52 +0100 (Mon, 17 Jun 2013)
以获取SVN版本和标签创建日期

这真的很好…直到有人提交到标签上。这是常有的事。更新版本的TortoiseSVN警告您,您可以创建预提交钩子来尝试物理上禁止提交到tags1上,但无论如何我都要处理这种情况

我们被告知“
上次更改版本
”和“
上次更改日期
我们可以在没有太多工作的情况下(理想情况下没有第二次
svn
调用),要求使用“
第一次更改的版本”
”和“
第一次更改的日期”
”?


相关:“”即将推出,但如果可能的话,我特别想通过单个
svn info
调用来实现这一点。(“也很接近,但最终毫无用处。)

1事实上,我在没有禁止初始标签创建的情况下很难做到这一点,尽管这是另一天的故事

理想情况下不需要第二次
svn
调用

一种方法违反此“约束”,但在其他方面满足您的需要,而且非常简单,即执行初始预处理步骤以显式检索该修订号:

[tomalak@cat ~]$ svn log https://localhost/svn/myproject/tags/v8-11/ \
  --stop-on-copy --quiet | grep ^r | tail -n 1 | sed -r -e 's/^r|\s.*//g'
15000
然后,您的自动
svn info
调用可以使用此修订号提供所需的详细信息:

[tomalak@cat ~]$ svn info https://localhost/svn/myproject/tags/v8-11/ -r 15000
Path: v8-11
URL: https://localhost/svn/myproject/tags/v8-11
Repository Root: https://localhost/svn
Repository UUID: ***
Revision: 15000
Node Kind: directory
Last Changed Author: ***
Last Changed Rev: 15000
Last Changed Date: 2013-04-30 12:01:30 +0100 (Tue, 30 Apr 2013)

如果您确实只需要一个命令,那么您可以始终使用反勾号在
svn info
调用中执行
svn log
内联操作:

[tomalak@cat ~]$ svn info https://localhost/svn/myproject/tags/v8-11/ \
    -r `svn log https://localhost/svn/myproject/tags/v8-11/ \
    --stop-on-copy --quiet | grep ^r | tail -n 1 | sed -r -e 's/^r|\s.*//g'`

当然,事实上,这仍然在执行两次
svn

调用,我认为除了解析
svn log
的输出之外,没有其他选择,可能是使用
--xml
option@Nicola当前位置确实开始出现这种情况。
[tomalak@cat ~]$ svn info https://localhost/svn/myproject/tags/v8-11/ \
    -r `svn log https://localhost/svn/myproject/tags/v8-11/ \
    --stop-on-copy --quiet | grep ^r | tail -n 1 | sed -r -e 's/^r|\s.*//g'`