Проверьте, является ли git repo общедоступным с HTTP-запросом - PullRequest
0 голосов
/ 02 марта 2019

Для моего проекта мне нужно знать, является ли git-репозиторий общедоступным или не выполнять какие-либо действия.Сначала я подумал об использовании HTTP-запроса, поэтому использую почтальон и попытался использовать несколько URL-адресов методом HEAD.

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

Когда я отправляю запрос в github для частного проекта, я получаю статус 404, поэтому он идеально подходит для меня, потому что я знаю, что это частный проект.

НО, когда я делаю это для gitlab, я получаю статус 200, затем я перенаправлен.

Я хотел бы знать, есть ли решение для этого.

1 Ответ

0 голосов
/ 03 марта 2019

Как правило, самый простой способ сделать это - выполнить запрос GET после добавления /info/refs?service=git-upload-pack к URL-адресу.Это конечная точка, которую Git использует для получения справочной информации.

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

Обратите внимание, что вы не можете использовать HEAD запрос;GitHub возвращает метод 405, не разрешенный в этом случае.

Пример: Репо с открытым исходным кодом: https://gitlab.com/gitlab-org/gitlab-ce.git

{GET}: https://gitlab.com/gitlab-org/gitlab-ce.git/info/refs?service=git-upload-pack

Пример 401:

wget $URL
Connecting to gitlab.com (35.231.145.151:80)
Connecting to gitlab.com (35.231.145.151:443)
wget: server returned error: HTTP/1.1 401 Unauthorized

echo $?
1
...