Текущая команда пересмотра Подверсии

Существует ли команда Subversion для показа текущего числа пересмотра?

После svn checkout Я хочу запустить сценарий и нуждаться в числе пересмотра в переменной. Было бы замечательно, если существует команда как svn info get_revision_number.

66
задан Tom Brito 6 June 2013 в 13:24
поделиться

6 ответов

Новые версии svn поддерживают аргумент - show-item:

svn info --show-item revision

Для номера ревизии вашей локальной рабочей копии используйте:

svn info --show-item last-changed-revision

Вы можете использовать os.system() для выполнения такой командной строки:

svn info | grep "Revision" | awk '{print $2}'

Я делаю это в моих скриптах ночной сборки.

Также на некоторых платформах есть команда svnversion, но я думаю, что у меня была причина не использовать ее. Ах, да. Вы не можете получить номер ревизии из удаленного репозитория, чтобы сравнить его с локальным с помощью svnversion.

.
103
ответ дан 24 November 2019 в 14:57
поделиться

Есть также более удобная (для некоторых) команда svnversion.

Вывод может быть одним номером ревизии или что-то вроде этого (из -h):

  4123:4168     mixed revision working copy
  4168M         modified working copy
  4123S         switched working copy
  4123:4168MS   mixed revision, modified, switched working copy

Я использую этот фрагмент питонового кода для извлечения информации о ревизии:

import re
import subprocess

p = subprocess.Popen(["svnversion"], stdout = subprocess.PIPE, 
    stderr = subprocess.PIPE)
p.wait()
m = re.match(r'(|\d+M?S?):?(\d+)(M?)S?', p.stdout.read())
rev = int(m.group(2))
if m.group(3) == 'M':
    rev += 1
24
ответ дан 24 November 2019 в 14:57
поделиться
  1. Сначала статус svn имеет номер ревизии, вы можете прочитать его оттуда.

  2. Также, каждый файл, который вы храните в SVN, может хранить номер ревизии сам по себе -- добавьте ключевое слово $Rev$ к вашему файлу и запустите propset: svn propset svn:keywords "Revision" file

  3. Наконец, номер ревизии также находится в файле .svn/entries, четвертая строка

Теперь каждый раз, когда вы извлекаете этот файл, он будет иметь ревизию сам по себе.

.
5
ответ дан 24 November 2019 в 14:57
поделиться

svn info, я полагаю, это то, что вы хотите.

Если бы вы просто хотели ревизию, возможно, вы могли бы сделать что-то вроде:

svn info | grep "Revision:"
2
ответ дан 24 November 2019 в 14:57
поделиться

Используйте нечто подобное, пользуясь XML выходом Subversion:

# parse rev from popen "svn info --xml"
dom = xml.dom.minidom.parse(os.popen('svn info --xml'))
entry = dom.getElementsByTagName('entry')[0]
revision = entry.getAttribute('revision')

Обратите внимание также, что в зависимости от того, для чего вам это нужно, запись может быть больше того, что вы ищете. Это дает "Last Changed Rev", которая не изменится до тех пор, пока код в текущем дереве не изменится на самом деле, в отличие от "Revision" (то, что дано выше), которая изменит в любой момент, когда что-либо в репозитории изменится (даже ветки), и вы сделаете "svn up", что не то же самое, и не так часто, как полезно.

.
2
ответ дан 24 November 2019 в 14:57
поделиться

Думаю, мне нужно сделать svn информацию, а затем получить номер со строковой манипуляцией из "Revision: xxxxxx". Было бы просто здорово, если бы была команда, возвращающая только число :)

.
0
ответ дан 24 November 2019 в 14:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: