使用bash从subversion获取修订号

时间:2010-02-19 21:12:10

标签: bash shell

我想在bash中编写一个shell脚本来从svn存储库中部署网站。当我部署网站时,我将导出的目录命名为 website_name -R revision_number 。我希望bash脚本自动重命名导出的目录,因此需要从导出目录中学习当前的修订版号。如果我跑

$> svn info http://svn-repository/trunk

Path: trunk
URL: http://svn-repository/mystery/trunk
Repository Root: http://svn-repository/mystery
Repository UUID: b809e6ab-5153-0410-a985-ac99030dffe6
Revision: 624
Node Kind: directory
Last Changed Author: author
Last Changed Rev: 624
Last Changed Date: 2010-02-19 15:48:16 -0500 (Fri, 19 Feb 2010)

字符串Revision:之后的数字是我想要的。如何将其转换为bash变量?我是否对svn info命令的输出进行字符串解析?

9 个答案:

答案 0 :(得分:31)

使用svnversion。这将输出修订号/范围,最小附加值

答案 1 :(得分:25)

REVISION=`svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //'`

这很简单,如果不优雅的话。

答案 2 :(得分:5)

只需使用一个awk命令。也简单得多。

var=$(svn info http://svn-repository/trunk | awk '/^Revision:/{print $2}')

答案 3 :(得分:4)

解析'Revision'字符串不能在不同的语言环境中移植。 例如。我的语言环境就像:

...
Wersja: 6583
Rodzaj obiektu: katalog
Zlecenie: normalne
Autor ostatniej zmiany: ...
Ostatnio zmieniona wersja: 6583
Data ostatniej zmiany: 2013-03-21 11:33:44 +0100 (czw)
...

你不想解析那个:)

因此,最好的方法是使用'svnversion'作为oefe建议。这是为此目的提到的工具。

答案 4 :(得分:2)

不使用grep或awk:

xxx 1
x0n 2
nnn 3

REVISION=`svn info --show-item=revision | sed 's/ //g'` 最后只是删除尾随空格。

答案 5 :(得分:1)

svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '

吐出修订版 在shell脚本中使用反引号来执行此操作并将结果分配给变量:

REVISION=`svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '`

答案 6 :(得分:0)

可能有十几种不同的方法可以做到这一点,但我会选择一些简单的方法:

revision="$(svn info http://svn-repository/trunk | grep "^Revision:" | cut -c 11-)"

答案 7 :(得分:0)

这将为您提供头部修订号

svn info -r 'HEAD' | grep Revision | egrep -o "[0-9]+"

egrep是扩展grep。

答案 8 :(得分:0)

REVISION=$(svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //p')
echo $REVISION