Сведения о вопросе

Mathprofi

22:48, 8th August, 2020

Теги

svn   debugging   testing   revision   versions    

Получение номера репозитория subversion в коде

Просмотров: 425   Ответов: 6

Я хотел бы реализовать способ записи версии проекта в коде, чтобы его можно было использовать при тестировании и отслеживать ошибки. Похоже, что лучшим номером версии для использования будет просто текущий номер версии из Subversion. Есть ли простой способ закрепить это число в заголовочном файле (C++ в моем случае) или что-то еще, что я могу получить в коде? Я думаю, что это пост-коммит-крючок или что-то в этом роде?

Есть ли у кого-нибудь опыт реализации этого (с кодом для обмена, пожалуйста?), или может предложить лучшую альтернативу? Спасибо.



  Сведения об ответе

SKY

17:39, 28th August, 2020

Два пути:

Добавьте $Id$ или $Revision$ в код. Затем установите для файла свойство svn:keywords= "ID Revision" . Это даст вам последнюю измененную версию этого исходного файла. Хорошо подходит для небольших проектов и сценариев.

В качестве альтернативы можно использовать управляемый Makefile процесс и средство командной строки svnversion. (Специфика языка-это должно работать для C/C++)

echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

Или какой-нибудь более сложный скрипт сборки с sed и version.h.in. Тогда просто #include version.h

Это даст вам номер версии репозитория, который будет меняться с каждой фиксацией / обновлением и, вероятно, является более подходящим номером версии для большинства проектов.

Примечание: Я также использовал читаемую человеком строку версии, которую я обновляю вручную. Пример бы дал: версия: 1.0.1-r13445

~J


  Сведения об ответе

DAAA

17:50, 19th August, 2020

В то время как nifty, трюк с ключевым словом revision обновляет файл только тогда, когда он изменен в этой ревизии - если вы не изменяете файл, то он будет продолжать отражать старую ревизию.

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

Википедия делает это на своей странице версии , чтобы указать на пересмотр программного обеспечения, которое работает в реальном времени; код здесь - ищите метод getSvnRevision() .


  Сведения об ответе

ITSME

22:43, 15th August, 2020

Вы также можете использовать SubWCRev, который является частью TortoiseSVN.

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

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html


  Сведения об ответе

VERSUION

03:35, 20th August, 2020

в вашем файле Makefile добавьте:

SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...

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

printf ("Version: SVN %s\n", SVN_REV);


  Сведения об ответе

SKY

20:25, 12th August, 2020

Свойство svn:keywords можно использовать для включения ключевого слова Rev .

Затем вы можете использовать $Rev$ в своем коде, а SVN автоматически расширит его при обновлении до $Rev: 256 $ , который затем можно будет разобрать...

Более подробная информация о руководстве Subversion


  Сведения об ответе

DINO

09:41, 13th August, 2020

Хорошее решение up-to-date:

Создайте Makefile , содержащий следующую строку (в той же папке, что и YourFile.dox ):

sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox

И YourFile.dox должен содержать это:

...
PROJECT_NUMBER         = "Revision RevNumber"
...

Сейчас:

  1. sed заменяет RevNumber в .dox на вывод svnversion (выполняется в главной папке вашего репозитория) и сохраняет измененный файл в YourFileDummy.dox
  2. doxygen выполняется на YourFileDummy.dox для создания документации
  3. Теперь ваша документация будет содержать номер редакции!


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться