Bitbucket Server API: получить необработанные файлы, связанные с запросом извлечения - PullRequest
0 голосов
/ 21 декабря 2018

Ситуация : Для репозитория, размещенного на сервере Bitbucket, у меня есть настройка webhook для отправки запроса на внешний сервер всякий раз, когда открывается запрос на извлечение.Затем сервер использует API Bitbucket Server для получения различий всех файлов, связанных с pr.Это работает просто отлично, потому что учетная запись сервера имеет доступ для чтения к репозиторию с настройкой webhook.Далее я хотел бы получить необработанные файлы, связанные с запросом извлечения.

Проблема : В случае, когда другой пользователь разветвляет этот репозиторий, вносит изменения и отправляет pr,мой сервер не имеет доступа на чтение к этой пользовательской ветке репо и, следовательно, к файлам в их измененном состоянии.

Я просмотрел документацию по Bitbucket Server, но не могу найти способ получитьсырые файлы, кроме как просто читать из репозитория пользователей.Это прекрасно работает, когда pr из какой-либо ветви основного репо на мастер-репозиторий в том же репо, поскольку проблема с правами на чтение не входит в игру.

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

Любой способ сделать это без того, чтобы каждый пользователь отправлял pr для предоставления доступа на чтение к серверу.аккаунт?

Спасибо

1 Ответ

0 голосов
/ 21 декабря 2018

Это точно нигде не задокументировано, но как только открывается запрос на получение, BitBucket создает несколько ссылок, связанных с запросом на получение.Вы, вероятно, заинтересованы в следующих двух.

  1. refs / pull-запросы / [PR_ID] / из - Исходная ветка пользователя
  2. refs /pull-запросы / [PR_ID] / merge - ветвь исходного пользователя объединена с целевой ветвью

Итак, вы можете оформить любой из них (в зависимости от того, что вы хотите), что даст вам всефайлы (измененные и другие), используя refspec .

т.е.

+refs/pull-requests/[PR_ID]/*:refs/remotes/origin/pull-requests/[PR_ID]/*

Затем вы можете получить пути к измененным файлам с помощью PR Changes REST API и извлечь файлы с помощью этих путей с диска (где- когда бы вы ни выехали).

Тем не менее, стоит отметить, что команда BitBucket предупреждает , что эти реализации предназначены только для внутреннего использования и могут быть изменены без предупреждения.Но реализация не изменилась за 6 лет.

Ссылка

...