gpt4 book ai didi

git - 使用 HTTP 请求检查 git repo 是否公开

转载 作者:太空狗 更新时间:2023-10-29 13:34:38 24 4
gpt4 key购买 nike

对于我的项目,我需要知道 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com