Ответ 1
Используйте svnversion. Это выведет номер версии/диапазон с минимальным дополнительным трещиной
Я хочу написать оболочку script в bash для развертывания веб-сайтов из репозитория svn. Когда я развертываю веб-сайт, я называю экспортированный каталог имя_сайта-Rrevision_number. Я бы хотел, чтобы bash script автоматически переименовал экспортированный каталог, поэтому ему нужно узнать текущий номер версии из каталога экспорта. Если я запустил
$> 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
?
Используйте svnversion. Это выведет номер версии/диапазон с минимальным дополнительным трещиной
REVISION=`svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //'`
Это просто, если неэлегантно.
просто используйте одну команду awk. намного проще.
var=$(svn info http://svn-repository/trunk | awk '/^Revision:/{print $2}')
Разбор строки "Редакция" не переносится в разных локалях. Например. с моей локалью это как:
...
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. Это инструмент, упомянутый для этой цели.
Без использования grep или awk:
REVISION=`svn info --show-item=revision | sed 's/ //g'`
sed
в конце - это просто удалить конечные пробелы.
svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '
Выплевывает ревизию Используйте backticks в своей оболочке script для выполнения этого и присвойте результаты переменной:
REVISION=`svn info http://svn-repository/trunk | grep Revision | tr -d 'Revison: '`
Есть, вероятно, несколько десятков способов сделать это, но я бы пошел с чем-то простым:
revision="$(svn info http://svn-repository/trunk | grep "^Revision:" | cut -c 11-)"
Это даст вам номер версии главы
svn info -r 'HEAD' | grep Revision | egrep -o "[0-9]+"
egrep является расширенным grep.
REVISION=$(svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //p')
echo $REVISION