从命令行使用 bash、cURL 和 GitHub API 分叉 GitHub 存储库

She*_*man 5 bash curl fork github github-api

我的 bash 脚本无法使用 cUrl 对 GitHub 存储库进行分叉。
用于创建 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

产生以下错误: { "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }

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

关于如何从命令行创建 repo 分支的任何想法?

我有一个 bash 脚本: - 在 github 上创建一个空的 repo,并使用我要克隆的 repo 的名称, - 在本地从另一个用户克隆一个 repo,并且 - 将我克隆的 repo 推送到我在我的文件中创建的空 repo github 帐户 - 适当地设置原点和上游遥控器

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

目标是从命令行完成我所有的克隆(和分叉)。

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

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

She*_*man 6

这是我的工作 bash 脚本:

curl -u $my_user_name https://api.github.com/repos/$upstream_repo_username/$upstream_repo_name/forks -d ''
Run Code Online (Sandbox Code Playgroud)

使用硬编码字符串代替 bash 变量的示例:

curl -u 'SherylHohman' https://api.github.com/repos/octocat/Hello-World/forks -d ''
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

使用 curl,默认请求是 GET
curl 中,POST 请求是通过添加-d(相当于--data)标志后跟要发送的数据来发出的。

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

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

如果我只是将其搁置一边,API 调用将作为 GET 进行处理。
它返回有关我想要分叉的 repo 的信息,
而不是将 repo分叉到我的帐户。

@YuriSchimke 的帖子给了我“啊哈!”。谢谢!我笑着说我没想到。我很感激尤里让这一切变得如此明显!(再次感谢)。