git hooks после слияния - PullRequest
       4

git hooks после слияния

2 голосов
/ 27 марта 2011

Есть ли какой-нибудь способ сказать, было ли слияние связано с извлечением?

Я бы хотел использовать слияния git-flow в качестве хука для отправки моих данных в heroku.Идеи?

1 Ответ

1 голос
/ 29 марта 2011

Лично мне бы не понравилось это соглашение: каждое слияние с мастером или разработкой, которое вы пробуете локально, приведет к развертыванию, и я бы предпочел сделать развертывание кода активным решением - нет места, чтобы попытаться объединить что-то безразвернуть его.(Кроме того, я точно не знаю о поведении Heroku, но я был бы удивлен, если бы оно переместилось при отправке коммита на реф, который не изменил бы этот реф.) Наконец, часто слияние, выполняемое вытягиванием, не будетБыстрая перемотка вперед, поэтому будет новая версия кода для развертывания.

Однако, если вы действительно хотите это сделать, вы можете сделать следующее в скрипте:

UPSTREAM=$(git rev-parse --symbolic-full-name @{u})

Это даст вам ветку удаленного отслеживания, которая представляет собой восходящую ветку от вашей текущей ветки - в хуке после слияния ваша текущая ветвь - та, в которую вы только что слились.(Эта хорошая команда взята из комментария Кевина Балларда к этому ответу .) Вы можете найти имя объекта (SHA1sum) этого коммита с помощью:

UPSTREAM_OBJECT_NAME=$(git rev-parse --verify $UPSTREAM)

Затем вы хотите узнатьесли этот коммит был одним из родителей HEAD - вы можете получить родителей с:

HEAD_PARENTS=$(git log -n 1 --pretty=format:"%P")

... так что вы можете проверить, был ли один из родителей выше по течению с:

git log -n 1 --pretty=format:"%P" | grep -q $UPSTREAM_OBJECT_NAME

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

git reflog show -n 1 $UPSTREAM

... содержание pull : fast-forward.

Это должно дать вам кусочки, необходимые для post-merge сценария нужного вам типа,Повторим, однако, я действительно не хотел бы этого;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...