#bash #git #jenkins
#bash #git #дженкинс
Вопрос:
Я пытаюсь заставить Jenkins запускать определенный скрипт, если есть фиксация слияния в главной ветке, в которой изменена конкретная строка в файле конфигурации. Проверить фиксацию слияния в master легко. Проблема в том, что я не могу понять, как проверить разницу до и после слияния.
Я пытался использовать git diff
, чтобы сделать это в скрипте с помощью инструкции if. Лучший пример, который я нашел, который казался близким к правильному diff, это:
git diff -G'changed_field=' HEAD^ HEAD -- config.cfg
Поскольку трудно точно увидеть, что происходит в Jenkins, из вывода на консоль задания, все, что я могу понять, это то, что он не улавливает изменения, поскольку я не вижу никакого вывода из этого. Разница действительно работает, когда я запускаю ее в своей локальной ветке, чтобы проверить мои последние 2 коммита на master.
Ответ №1:
Если HEAD является фиксацией слияния, вы могли бы, по крайней мере, сделать:
git show @
# or, more precisely:
git show @:/config.cfg
Из git показать справочную страницу:
Для фиксаций он показывает сообщение журнала и текстовую разницу.
Он также представляет фиксацию слияния в специальном формате, созданномgit diff-tree --cc
.
Это покажет, что было до и что было добавлено / удалено в результате этого слияния.