我正在尝试构建 PHP 函数来创建和更新 Github 存储库中的文件,通过 Github API 使用 PHP。
PHP 文件是从标准共享主机帐户运行的。因此,使用依赖于安装 Composer 或其他库的框架对我来说不是一个选择。例如,这个https://github.com/KnpLabs/php-github-api不是一个选项。
迄今为止
我已经设法使用 PHP 访问和列出文件,使用此处提供的信息:
我使用了第 2 个和第 6 个答案的组合(第 2 个以Here is a nice way just with the curl.开头,第 6 个答案为When you say "display a repo and its contents" by Ivan Zuzak)。
两者都清楚地列出了列出文件和获取内容所需的代码和步骤(谢谢@flesheater 和@Ivan Zuzak)
我为此寻求帮助或解决方案。到目前为止,我还没有找到任何使用 PHP 的示例,无论是工作还是其他方式。
Git API 文档
Git 数据 API 信息 ( https://developer.github.com/v3/git/ ) 是这样说的:
例如,如果您想提交对存储库中文件的更改,您可以:
Run Code Online (Sandbox Code Playgroud)get the current commit object retrieve the tree it …
我正在尝试使用 Gitlab API 从存储库子目录获取存储库内容列表。
由于顶级访问工作正常,我假设问题不是授权或一般方法,而是为子目录传递的 URL 和参数。或者,这可能是 Gitlab API 已记录但未实现的功能。
例如,使用 PHP 和curl GET,以下 URL 适用于文件和文件夹的顶级列表:
API 文档说:
GET /projects/:id/repository/tree
Run Code Online (Sandbox Code Playgroud)
这个 URL 与curl GET 函数一起工作正常:
https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree
Run Code Online (Sandbox Code Playgroud)
(我在另一个 gitlab 线程中找到了带有 %2F 的 USERNAME%2FPROJECTNAME 。这似乎是文档中 ID 的含义)
为了澄清起见,顶级内容列表的工作代码片段是:
$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree";
$ch = curl_init($url);
Run Code Online (Sandbox Code Playgroud)
因此,对于子目录访问,API 文档列出了参数:
id (必需)- 项目
路径的 ID (可选)- 存储库内的路径。用于获取子目录的内容
ref_name(可选) - 存储库分支或标签的名称,或者如果没有给出默认分支
因此,基于此,我尝试了以下各项作为上面的curl_init命令的URL:
$url = "https://gitlab.com/api/v3/projects/USERNAME%2FPROJECTNAME/repository/tree?path=SUBDIRECTORY";
Run Code Online (Sandbox Code Playgroud)
这将返回一个空字符串。为了防止我遗漏了什么,我还尝试了以下各项:
$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 . "?" . …Run Code Online (Sandbox Code Playgroud)