Ищем класс Java для получения информации о версии SVN в SVN 1.7 - PullRequest
1 голос
/ 31 января 2012

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

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

Приветствия, Питер

Ответы [ 3 ]

1 голос
/ 31 января 2012

Разбор 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.

1 голос
/ 31 января 2012

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

0 голосов
/ 31 января 2012

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

...