对于我的项目,我需要知道 git 存储库是否公开才能执行某些操作。 我首先想到使用 HTTP 请求,所以我使用 postman ,我尝试使用 HEAD 方法使用多个 URL。
当我发送请求时,我看不到 header 中的内容可以指示我是否失败。
当我向 github 发送私有(private)项目的请求时,我收到状态 404,所以这对我来说是完美的,因为我知道这是一个私有(private)项目。
但是当我为 gitlab 执行此操作时,我收到状态 200 然后我被重定向。
我想知道是否有解决方案。
最佳答案
通常,最简单的方法是在将 /info/refs?service=git-upload-pack
附加到 URL 后执行 GET
请求。这是 Git 用来获取引用信息的端点。
如果存储库是公开的,您将得到 200。如果存储库是私有(private)的或不存在,您可能会得到 401。在您通过身份验证之前,大多数主要托管服务提供商不会提供有关私有(private)存储库是否存在的信息,因此无论哪种方式,您都会收到 401。
请注意,您不能使用HEAD
请求;在这种情况下,GitHub 会返回 405 Method Not Allowed。
示例: 开源代码库: 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
关于git - 使用 HTTP 请求检查 git repo 是否公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54959589/