Получение последнего номера ревизии в SVN? - PullRequest
97 голосов
/ 23 февраля 2009

Используя PHP, Perl или Python (предпочтительно PHP), мне нужен способ запросить базу данных SVN и узнать номер последней редакции, отправленной в SVN. Мне не нужно ничего, кроме этого. Он должен быть не интенсивным (поэтому я делаю это каждые 5 минут как задание cron; производительность SVN не должна быть затронута).

SVN находится в моей внутренней сети, но не на моем конкретном компьютере.

У меня установлен SVN, но нет привязок для PHP / Perl / Python. Я использую Windows XP, но я бы предпочел независимое от платформы решение, которое также может работать в Linux. Если у вас есть решение только для Linux (или только для XP), это также будет полезно.

Ответы [ 25 ]

0 голосов
/ 23 февраля 2009

Похоже, есть запись в официальном FAQ для этого . Исходный код написан на C, но применяется тот же принцип, что и , изложенный здесь в этом сообщении списка рассылки .

0 голосов
/ 09 июня 2014

Обновление: Subversion 1.9 будет поддерживать новую команду "svn youngest", которая выводит только последний номер редакции. Разница с svnlook youngest заключается в том, что svn youngest также работает удаленно.

http://subversion.tigris.org/issues/show_bug.cgi?id=4299

0 голосов
/ 30 апреля 2014

$ svn log | head -10 в любом каталоге, в котором есть папка .svn

0 голосов
/ 16 июня 2012

Опубликованные решения не подходят для случая использования внешних устройств.

Если у меня есть URL или рабочая копия с установленным свойством svn:externals, внешние данные могут измениться, и, следовательно, изменится последняя версия сервера Subversion. Но последняя ревизия рабочей копии или URL-адреса будет сообщать номер ревизии только при изменении свойства svn: externals или любого элемента ниже в пути URL, что является ожидаемым поведением.

Таким образом, вы либо получаете свойство svn:externals, итерируете URL-адреса и выбираете ревизию высот, либо запрашиваете базовый URL-адрес с сервера Subversion. Версия, сообщаемая из базового URL, будет содержать последнюю версию для ВСЕХ на сервере.

Итак, если вы используете внешние устройства, лучше всего использовать svn info BASE_URL, где BASE_URL - это корневой URL для всех путей на сервере Subversion.

0 голосов
/ 25 октября 2012

svn info или svnversion не будут принимать во внимание подкаталоги, чтобы найти последнюю «ревизию» живой кодовой базы, которую взломанный путь работал для меня - это может занять некоторое время для запуска:

repo_root$ find ./ | xargs -l svn info  | grep 'Revision: ' | sort
...
Revision: 86
Revision: 86
Revision: 89
Revision: 90
$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...