Как я могу обновить номера версий моего проекта с помощью Git?

Скажем, у меня есть две ветви: develop а также feature,

Предположим, у меня также есть файл с именем VersionNumber который имеет следующее содержание:

BUILD_NUMBER 1

Я хочу использовать Git-хуки, чтобы при слиянии feature в develop, BUILD_NUMBER поле увеличивается автоматически.

Я думал о следующем процессе, используя post-merge крюк:

  1. Проверьте, что объединяемая ветка develop
  2. Обновите VersionNumber файл путем увеличения BUILD_NUMBER на 1
  3. Добавьте обновленный файл: git add VersionNumber
  4. Изменить коммит: git commit --amend -C HEAD --no-verify

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

Любой совет, как я могу это сделать (используя post-merge или любой другой крючок в этом отношении)?

1 ответ

К сожалению, в вашем вопросе отсутствует пример кода. Однако я был в состоянии воспроизвести для удовольствия. Действительно, вы не можете вносить изменения (например, изменение файла) в коммит слияния - это, кажется, имеет некоторый смысл. На самом деле вы после слияния, но с помощью amend вы пытаетесь вернуться в коммит слияния и изменить его.

Поэтому я думаю, что лучший шанс для вас - просто добавить коммит для повышения версии.

Что-нибудь еще просто сделало бы это ужасно сложным и склонным к угловым случаям, которые не работают и стоят вам много времени, чтобы понять, как спасти ваши коммиты и управление версиями. Я всегда хотел, чтобы все было как можно проще. Но, может быть, кто-то еще может придумать что-нибудь получше.

Это post-merge крючок я написал, если кому интересно; не проверяет ветку:

perl -i -pe 's/(\d+)/1+$1/e' VersionNumber 
echo "bump version: `cat VersionNumber`"
git add VersionNumber
git commit --amend -m "bump version: `cat VersionNumber`"
Другие вопросы по тегам