Есть много способов сделать это, хотя я бы предупредил, что этот метод генерации номеров сборки может оказаться ограничивающим с точки зрения того, как вы можете использовать ветки, если ваш проект перерастет вашу текущую стратегию ветвления (как только один пример).
Вы можете использовать идентификатор последнего коммита перед вилкой.Мне не нравится этот подход, потому что не сразу понятно "почему", когда вы видите команду типа
git rev-list abcdef12..HEAD --count
("ну, почему abcdef12
имеет смысл /").Кроме того, если вы когда-нибудь сделаете переписывание истории, которое влияет на этот коммит, вам придется обновить свои скрипты сборки для нового идентификатора фиксации.(Но этот вид переписывания в любом случае довольно радикальный, так что это легко может никогда не иметь значения; я просто предпочитаю избегать ненужных ограничений.)
Другой вариант - пометить коммит на развилке (как вы сами предлагаете),Это устраняет обе проблемы, так как вы можете дать тегу осмысленное имя и переместить его по мере необходимости для переписывания истории.
git rev-list project-start..HEAD --count
Или, поскольку это, несомненно, константа, вы можете всего один раз сосчитать коммиты до точка разветвления, и в ваших сценариях вычтите это из числа.В некотором смысле это кажется проще, хотя я полагаю, что на самом деле это немного сложнее реализовать.