2009-03-31 3 views
1

Я - единственный разработчик, использующий GIT для управления версиями встроенного программного обеспечения, написанного на C. Программное обеспечение должно быть в курсе его версии, и в настоящее время оно выполняется путем включения файла заголовка с единственным #define:Получение версии

#define SOFTWARE_VERSION "1.021"

Этот заголовочный файл автоматически создается сценарий Python предварительно сборки, который пытается получить последний хранилищу формы тег GIT (пометить все выпущенные версии с текущей строки версии). Это команда, которую я использую для получения последней версии.

мерзавец описывают --tag ГОЛОВКИ

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

Может ли кто-нибудь предложить улучшения в деталях рабочего процесса или реализации? (если кому-то интересно, я могу опубликовать скрипт python, который анализирует вывод описания git)

ответ

2

Отделите номер версии программного обеспечения от номера версии системы CM.

Да, вам нужно знать версию или тег в системе CM, которая соответствует данному номеру выпуска, но не используйте номер версии системы CM для определения номера выпуска.

С помощью простых VCS, таких как RCS или SCCS, и с помощью простых (одного файла) программ, вы можете использовать VCS для предоставления версии программы - я делаю это сам. Но все мои сложные программы используют полностью отдельную схему нумерации версий, полностью отделенную от номеров версий в VCS.

+0

Да, используйте сценарий предварительной сборки для * записи * тега на вашем репо с номером выпуска, который вы вычисляете или вводите. – Paul

+0

Я не использую версию CM для определения номера выпуска. Я помещаю тег вручную, и он не имеет ничего общего с идентификатором фиксации CM. Используя описание git, я могу получить последний тег, но я не доволен результатом, который нужно проанализировать, чтобы быть полезным. Это похоже на взлом ... – Josip

1

Как упоминается в этом SO question, git describe может быть то, что вам нужно ссылаться на промежуточный «вариант», который является одновременно:

  • на основе последней аппликативной версии (т.е. «тега»)
  • на основе внутренней фиксации (т. е. sha1)

 Смежные вопросы

  • Нет связанных вопросов^_^