Запрос на слияние с помощью Github API: параметр SHA

Я читал документацию по GitHub API и не знаю, что делать с методом Merge Pull Request.

https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button

В частности, с параметром SHA. Я не понимаю, что именно я должен предоставить API.

В разделе INPUT указано, что я должен предоставить

  • commit_title Заголовок сообщения автоматической фиксации.
  • commit_message Дополнительная информация для добавления к сообщению автоматической фиксации.
  • sha SHA, который должен совпадать с заголовком запроса на извлечение, чтобы разрешить слияние.
  • merge_method Метод слияния с использовать.

Где я могу точно получить значение sha, которое мне нужно передать в API?

Спасибо!

Каждая фиксация имеет SHA (алгоритм безопасного хеширования), поэтому строка типа «f5dc32dc» действует как уникальный идентификатор этой фиксации. Запрос на вытягивание необходим для того, чтобы SHA последней фиксации ("HEAD") в рассматриваемой ветке был действительным.

Markus Appel 28.05.2019 15:44

Спасибо, ребята, я действительно ценю. Один комментарий, если кто-то дойдет до этого поста, Github ожидает полную строку хеш-коммита, а не только 7 символов (короткая версия). Если вы передадите короткую строку, вы получите ошибку 422. Ваше здоровье!

Rubendob 28.05.2019 18:09
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
1
2
946
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Рассмотрим следующую диаграмму, на которой показана ветвь функции, полученная из некоторой базовой ветви:

base:     ... A -- B -- C
                    \
feature:             D -- E

Предположим, что мы создали пул реквест из feature, возвращаясь к base. GitHub выполнит этот пул реквест, объединив feature с base. Запрос на вытягивание HEAD на момент создания запроса на вытягивание будет зафиксирован E в feature. Но HEAD ветки feature может измениться до завершения запроса на вытягивание.

Вызов API, который вы упомянули, включает в себя SHA-1 хэш HEAD запроса на вытягивание в качестве требования для завершения запроса на вытягивание. Это позволит избежать возможности слияния feature обратно с base при содержании коммитов дополнительный после коммита E.

Что касается того, как найти хэш SHA-1 для E, запроса на вытягивание HEAD, вы можете просто попробовать использовать git log, например.

# from feature
git log

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

Другие вопросы по теме