gpt4 book ai didi

bash - 使用 bash、cURL 和 GitHub API 从命令行 fork GitHub 存储库

转载 作者:行者123 更新时间:2023-11-29 09:21:11 25 4
gpt4 key购买 nike

我在使用 bash 脚本使用 cUrl fork GitHub 存储库时遇到问题。
creating a fork 的 gitHub API 文档.

我尝试了很多变体:

curl -u $my_user_name https://api.github.com/repos/forks -d "{\"owner\":\"$upstream_repo_username\",\"repo\":\"$ upstream_repo_name\"}"


curl -u $my_user_name https://api.github.com/repos/'$upstream_repo_username'/'$upstream_repo_name'/forks

产生以下错误:
{
“未找到信息”,
“documentation_url”:“https://developer.github.com/v3”
}

与此相反,以下内容按预期创建了一个新的空 github 存储库:
curl -u $my_user_name https://api.github.com/user/repos -d "{\"name\":\"$upstream_repo_name\"}"

关于如何从命令行创建存储库的分支有什么想法吗?

我有一个 bash 脚本: - 在 github 上创建一个空的 repo,其中包含我要克隆的 repo 的名称, - 在本地从另一个用户克隆一个 repo,并且 - 将我克隆的 repo 推送到我在我的 github 帐户中创建的空 repo - 适当设置源和上游 Remote

但是,此方法不会在 GitHub 中保持与源(分支)存储库的连接。我特别喜欢出现在我自己的 repo 名称下方的 fork 链接的便利性;-)

目标是从命令行进行所有克隆(和 fork )。

我不想打开浏览器,导航到我想 fork 的存储库,只是为了访问那个“ fork ”按钮。只返回到命令行来完成这个过程。

或者,我可以从命令行将克隆的存储库转换为 fork 的存储库吗? (即一些命令行 api 命令将重新创建 forks 拥有的那些内部 github 链接?)

最佳答案

这是我的工作 bash 脚本:

curl -u $my_user_name https://api.github.com/repos/$upstream_repo_username/$upstream_repo_name/forks -d ''

使用硬编码字符串而不是 bash 变量的示例:

curl -u 'SherylHohman' https://api.github.com/repos/octocat/Hello-World/forks -d ''

请注意,我将 -d '' 移到了末尾以避免登录错误。
该请求需要身份验证。
我通过 curl 的 -u 参数提供这个(而不是使用 OAuth2)。
当我使用 -u $my_user_name 选项时,
我必须将 -d '' 移动到 之后 URI
- 如果放在 -u 'username' 和 URI 之间会导致登录错误。

事实证明,我的脚本中使用 bash 语法的主要错误来源。
我在 bash 变量周围加了引号,那不应该在那里。
(..只是在不真正了解 bash 或 curl 的情况下解决痛点)

此外,正如#YuriSchimke 指出的那样,这个特定的 URI 需要在 URI 中传递参数。将这些选项作为 json 传递不是一个选项,这与用于创建新空白存储库的 URI 不同。

这就是为什么我对如何在 URI 中发送此数据感到困惑:

使用 curl,default request is a GET .
curl, POST requests通过添加 -d(相当于 --data)标志后跟要发送的数据来创建。

我需要发送一个 POST 请求。
GitHub API 的格式是 GET(和 POST 例如 CreateRepo)请求有时可以 send some parameters as json or query strings
注意:GitHub API 的文档似乎有点不完整,因为我没有看到任何关于允许 json 的 API 的提及,只有查询字符串。
我想在这种情况下,数据夹在两个静态 URI 部分之间,因此无法作为 json 值发送。

我不知道如何在没有数据的情况下使用-d标志:

如果我只是将其关闭,API 调用将作为 GET 处理。
它返回了关于我想要 fork 的 repo 的信息
而不是 repo 到我的帐户。

@YuriSchimke's post给了我那个“啊哈!”。谢谢!我笑着说我没有想到。我很感激尤里让这件事变得如此明显! (再次感谢)。

关于bash - 使用 bash、cURL 和 GitHub API 从命令行 fork GitHub 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44274188/

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