как управлять файлом версии в git - PullRequest
0 голосов
/ 26 октября 2019

Мне нужно иметь файл версии в моем git-репозитории.

У меня есть процесс выпуска (конвейер), который запускается вручную, когда мы решаем сделать выпуск, этот процесс должен выполнить:

  1. клонировать репозиторий
  2. запустить тесты
  3. вычислить новую версию
  4. обновить файл версии с новой версией
  5. зафиксировать и отправить файл новой версии
  6. создать тег / ветку в git с новой версией

Теперь, когда я сделаю клон из этого тега, файл версии должен содержать правильную версию.

Что произошло, если во время выполнения тестов (# 2) кто-то еще зафиксировал изменения в репозитории, будет ли тег, сгенерированный в # 6, содержать также изменения, которые не были протестированы в процессе выпуска?

Содержит ли логикаэтот поток правильный, или у меня есть лучший способ управлять файлом версии?

1 Ответ

1 голос
/ 26 октября 2019

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

Версия сохраняется во время сборки, при сборке результата.
Например, в Go,вы бы использовали флаг передачи в компоновщик Go , чтобы инициализировать строковую переменную.

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

  • хэш коммита Git во время сборки
  • статическая версия на основе API
  • изменяет пользователя, запускающего сборку
  • дата сборки

Таким образом, ваша программа может отображать много информации о ее сборкеVersiна.

...