Включить номер версии SVN в исходный код - PullRequest
17 голосов
/ 13 февраля 2012

Мое требование простое. В начале каждого файла должен быть комментарий к блоку:

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

Я хочу заполнить {username}, {date} и {revisionnumber} соответствующим содержимым от SVN.

Как мне добиться этого с NetBeans и Subversion? Я много искал, но не могу найти именно то, что мне нужно.

Ответы [ 5 ]

13 голосов
/ 13 февраля 2012

Я посмотрел на этот вопрос и получил некоторую полезную информацию. Это не совсем дубликат, потому что я работаю с NetBeans, но идея та же. Это мой заголовок:

/*
 * $LastChangedDate$
 * $LastChangedRevision$
 */

Затем я перехожу к Team> Subversion> Svn properties и добавляю svn:keywords в качестве имени свойства и LastChangedDate LastChangedRevision в качестве значения свойства.

А когда я фиксирую с NetBeans, это выглядит так:

/*
 * $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $
 * $LastChangedRevision: 27 $
 */

Спасибо всем за поддержку! Я приму мой ответ, потому что другие ответы не включают NetBeans информацию. Тем не менее я даю +1 другим ответам.

10 голосов
/ 13 февраля 2012

Поскольку эти данные существуют только после файла, который был зафиксирован, его должен устанавливать сам SVN, а не клиентская программа.(А обработка на стороне клиента имеет тенденцию отключаться или вообще не настраиваться.) Это означает, что не существует простого шаблона / замены, как вы хотите, потому что тогда после первой замены переменные шаблона будут потеряны.

ВыЗдесь можно найти информацию о подстановке ключевых слов SVN здесь .Тогда такие вещи, как $Rev$ можно заменить на $Rev: 12 $.

4 голосов
/ 13 марта 2013

Я последовал совету Петра Минчева, только я поместил тег $ LastChangedRevision $ не в блок комментария, а встроил его в строку. Теперь можно программно отобразить номер редакции в диалоговом окне «Справка -> О программе».

String build = "$LastChangedRevision$";

Позже я могу отобразить значение ревизии в диалоговом окне about, используя строку, у которой обрезан весь пух.

String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim();
4 голосов
/ 13 февраля 2012

Вы можете сделать это с помощью Программа SubWCRev .

SubWCRev - консольная программа Windows, которую можно использовать для чтения состояния рабочей копии Subversion и, при необходимости, для подстановки ключевых слов.в файле шаблона.Это часто используется как часть процесса сборки как средство включения информации рабочей копии в объект, который вы строите.Обычно его можно использовать для включения номера ревизии в поле «О программе».

Обычно это делается в процессе сборки.

Если вы используете Linux, вы можете найтиБинарный Linux здесь .Если вы хотите, вы также можете написать свой собственный, используя вывод svn log.

0 голосов
/ 13 февраля 2012

Я рекомендую немного другой подход.

Поместите следующий заголовок вверху ваших исходных файлов.

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

Затем добавьте скрипт оболочки, подобный этому

пост-обновление, скрипт проверки

USERNAME=# // use svnversion to get username
DATE=# // use svnversion to get revisio nnumber
sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE}

сценарий предварительной фиксации

cat standard_header.txt > ${SOURCE_CONTROL_FILE}
tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE}
...