2016-10-05 4 views
0

У меня есть репозиторий, который содержит код, написанный на языке C. Один из файлов является version.c файл, который содержит строкуGit и обновление содержимого файла при слиянии

#define Version_Build "0"  

У меня есть сценарий, который может найдите эту строку и увеличьте число 0 до следующего целого числа. Сценарий написан на Perl, но я мог бы просто использовать awk или sed.

Я хотел бы запускать сценарий автоматически в git, когда ветка объединяется для управления. Я думал, что крюк на стороне сервера будет правильным. Однако я не уверен, что это лучший подход?

Например, требуется ли git commit или git add для выполнения на главной ветке? Предполагая, что это лучший подход, вы можете рекомендовать подходящий тип крюка. Или есть ли лучшие способы решения одной и той же проблемы?

ответ

1

Существует один крючок, post-merge, который может быть вызван git merge. Но он работает в местном репо.

Если вы хотите, чтобы Git отслеживал изменение, да, вам нужно добавить и зафиксировать его. Это не следует делать в удаленном репо.

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

Никакой вариант git merge не может обходить этот крюк после его развертывания, что иногда может раздражать. Если вы хотите отключить крючок, есть некоторые подходы к выполнению задания. Установите переменную flag, доступную внутри крюка, проверьте ее значение и продолжайте. Вы можете экспортировать переменную окружения до git merge и затем отменить ее. Или вы можете установить самоопределяемый ключ конфигурации. Например, git config my.post-merge true или git config my.post-merge false заранее. В крючке проверьте значение git config --get my.post-merge. Другой способ - изменить имя крюка, например mv .git/hooks/post-merge .git/hooks/post-merged. Измените его, когда вам это нужно.

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

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