使用bash从subversion获取修订号

use*_*841 16 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)
Run Code Online (Sandbox Code Playgroud)

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

oef*_*efe 32

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

  • 这应该是我认为的答案. (4认同)

Pau*_*lin 26

REVISION=`svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //'`
Run Code Online (Sandbox Code Playgroud)

它很简单,如果不优雅的话.

  • 更简洁地说:REVISION =`svn info http:// svn-repository/trunk | sed -ne's/^ Revision:// p'` (12认同)
  • `REVISION = \`svn info http:// svn-repository/trunk | sed -ne's/^ Revision:// p'\`` - 您需要使用退格键来转义文字反引号. (3认同)

小智 6

解析 '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)
...
Run Code Online (Sandbox Code Playgroud)

你不想解析那个:)

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


gho*_*g74 5

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

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


Jae*_*hun 5

不使用 sed、grep 或 awk:

REVISION=`svn info --show-item=revision --no-newline`
Run Code Online (Sandbox Code Playgroud)