Отслеживайте, какая ветвь git в настоящее время развернута на сервере Heroku - PullRequest
0 голосов
/ 06 мая 2011

Я знаю, что есть ловушка http развертывания, которую я могу использовать, но, к сожалению, она не передает имя ветви, вот что она отправляет:

{"head"=>"7021419", "app"=>"appname", "git_log"=>"commit message", "action"=>"home", "url"=>"site url", "prev_head"=>"1d844b0", "controller"=>"account_sessions", "user"=>"heroku@user.com", "head_long"=>"7031429230228988d8f3312fa9e74d77b6c1bc14"}

Я пытался использовать head или head_long для определения имени ветви с помощью:

git branch --contains SHA 

Это сработало, но не на 100% точно, так как один и тот же SHA может быть в нескольких ветвях.То же самое можно сказать о:

git reflog show --all | grep 7021419

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

Ответы [ 2 ]

1 голос
/ 07 мая 2011

1.Обнаружение только

Если речь идет только о головах, используйте

git rev-list --no-walk --glob=refs/heads

с битом логики --format и grep, привязанной к

2.Локальное отслеживание

Самый простой способ - использовать тег.

Нажмите тег как обычную ветку:

git push herokuremote tagname: publicbranchname

К сожалению, это просто подтолкнеттег, а не ветвь ...;читайте дальше для альтернативы

( примечание: я не знаю / не использую heroku, поэтому я не знаю соглашений об именах, извините )

3.Символическая ссылка на ветвь

Если вы не возражаете против использования небольшого количества сантехники, вы можете назвать локальный ref как развернутый.Вы можете использовать символическую ссылку для этой цели:

git update-ref -m "deployed release candidate" --no-deref refs/heads/deployed master
0 голосов
/ 07 мая 2011

Если один и тот же SHA находится в нескольких ветвях, это фактически одна и та же ветвь (по крайней мере, в этот момент времени). Если вы уверены, что SHA является последним коммитом ветви, вы можете найти его в .git / refs /head / *, где * - список файлов, имена которых соответствуют именам веток, а содержимое - SHA.

Похоже, что вы могли бы решить эту проблему записи, не используя их API. Обертывание сценария развертывания (или двоичного файла развертывания Heroku, или перехвата после нажатия) даст вам гибкость, необходимую для уведомления другой службы о ведении записей.

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