Ищем класс Java для получения информации о версии SVN в SVN 1.7

Для расширения Ant у нас есть класс Java, который получает наибольшее число svnrevision в локальной рабочей копии. Класс уже поддерживает до SVN 1.6, но мы должны изменить его для поддержки SVN 1.7, используя локальный wc.db. Я уже некоторое время гуглял на эту тему, но не могу найти четкого намека на то, как решить эту проблему.

Имеется ли пример кода, как получить номер ревизии из рабочей копии SVN 1.7, эквивалентный тому, что делает двоичный файл svnversion?

Ура Питер

3 ответа

Разбор Subversion Metainfo для получения последней версии ревизии ИМХО не очень хорошая идея.

На самом деле, есть другой стандартный способ получения номера ревизии. Вы могли бы использовать svn:keywords чтобы получить номер текущей ревизии в ваших файлах после каждого коммита. Есть $Revision$ свойство для ревизионной замены. Вам просто нужно поместить следующую строку в файл и поместить этот файл под контроль версий:

$Revision$

Если вам нужно использовать свойство revision в ant, я бы порекомендовал поместить следующее содержимое в файл version.properties:

revision=$Revision$

Затем включите в build.xml с утверждением:

<property file="build.properties"/>

И тогда вы сможете использовать номер ревизии в вашем скрипте сборки:

<echo message="Deploying revision ${revision}" />

Также обратите внимание, что вам нужно будет явно включить svn:keywords используя свойства Subversion для того, чтобы получить $Revision$ подставил в ваш файл фактическое значение. Если вы используете version.properties для получения значения номера ревизии вам нужно будет выполнить следующую команду:

svn propset svn:keywords Revision version.properties

Не уверен, что это подойдет для вашего случая, но этот подход я чаще всего использую в своих проектах, если я хочу использовать номер редакции в процессе сборки. Этот подход определенно лучше, чем получение номера ревизии из рабочей копии metainfo.

SVNKit, единственный Java SVN API, который я знаю, поддерживает только Subversion 1.6.5. Но, может быть, функция, которую вы ищете, уже работает? Стоит попробовать, IMO.

Был ли SVNKit слишком простым: альфа-версия SVNKit уже поддерживает формат рабочей копии SVN 1.7... так что попробуйте...

Другие вопросы по тегам