gpt4 book ai didi

php - 如何使用 Gitlab API(使用 PHP curl)获取 Gitlab 存储库中子目录的内容

转载 作者:行者123 更新时间:2023-12-02 21:03:38 24 4
gpt4 key购买 nike

我正在尝试使用 Gitlab API 从存储库子目录获取存储库内容列表。

因为顶级访问工作正常,我假设问题不是授权或一般方法,而是为子目录传递的 URL 和参数。或者,这可能是 Gitlab API 已记录但未实现的功能。

例如,使用 PHP 和curl GET,以下 URL 适用于文件和文件夹的顶级列表:

API 文档说:

GET /projects/:id/repository/tree

这个 URL 与curl GET 函数一起工作正常:

https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree

(我在另一个 gitlab 线程中找到的带有 %2F 的 USERNAME%2FPROJECTNAME。这似乎是文档中 ID 的含义)

为了澄清,顶级内容列表的工作代码片段是:

$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree";
$ch = curl_init($url);

因此,对于子目录访问,API 文档列出了参数:

id (required) - The ID of a project
path (optional) - The path inside repository. Used to get contend of subdirectories
ref_name (optional) - The name of a repository branch or tag or if not given the default branch

因此,基于此,我尝试了以下各项作为上面的curl_init命令的URL:

$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree?path=SUBDIRECTORY";

这将返回一个空字符串。为了防止我遗漏了什么,我还尝试了以下各项:

$params = array( 'path' => SUBDIRECTORY);

$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree . "?" . http_build_query($params);

$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree . "?" . urlencode(http_build_query($params));

$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree . "%3F" . urlencode(http_build_query($params));

但是所有这些都从 Gitlab API 返回一个空字符串。不是错误,只是空字符串。


仅供引用,现有的问题没有帮助:

How to get subfolders and files using gitlab api

How to access source code files and list directories using GitLab API?

既不要回答超出当前文档中可用的答案,也不要给出可行解决方案的具体示例。

最佳答案

好的,通过执行以下一项或两项操作即可解决问题(我不确定哪一项解决了问题):

  • 添加了 SSH key

  • 在网址中使用了项目 ID,而不是 NAMESPACE/PROJECTNAME。

然后在 URL 上使用 ?path=SUBDIRECTORY&ref_name=master (如所讨论的那样),它就起作用了。

关于php - 如何使用 Gitlab API(使用 PHP curl)获取 Gitlab 存储库中子目录的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112872/

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