swa*_*ley 0 python git github-api pygithub
make update最近,在使用此片段运行了一堆存储库后,我一直在尝试使用 pyGithub 创建一些自动 PR 。
body = 'Test PR 2 please ignore'
pr = repo.create_pull(title="Test PR please ignore",
body=body,
head="patch/helm-chart-update",
base="master")
pr
Run Code Online (Sandbox Code Playgroud)
我一直从 API 收到此错误消息
github.GithubException.GithubException: 422 {"message": "Validation Failed", "errors": [{"resource": "PullRequest", "field": "head", "code": "invalid"}], "documentation_url": "https://developer.github.com/v3/pulls/#create-a-pull-request"}
当然,我的第一个猜测是我输错了存储库名称,但事实并非如此。奇怪的是,当我用不存在的分支名称(如“someGarbage”)替换头名称时,我得到了相同的错误。
接下来,我认为 PR 可能存在冲突或其他无效细节(尽管由于我正在使用的测试分支的简单性,这种情况极不可能发生),但 Github GUI 创建 PR 时没有任何问题。
最终我能够使用https://pypi.org/project/git-pull-request/制作 PR ,但不幸的是我看不到一种方法来避免它在 shell 中打开 vim (这会创建很多由于将运行的存储库数量较多,因此很辛苦)。如果一切都失败了,我可能只会使用 requests 来手动调用 Github API,但我真的很想使用 pyGithub,两者都可以保持代码简单/可维护(因为我已经使用该库来搜索目标存储库并将它们克隆到 /tmp 中),因为它通常看起来是一个不错的工具,我想学习如何使用它。
抱歉,由于问题的性质,这不是最可重现的,但我很乐意详细说明细节。有什么想法吗?
更新
在使用调用实现此功能后,我通过这篇文章requests了解到,如果您使用“params”参数进行调用以将 json 对象传递给 POST 请求而不是“json”参数,您会得到相同的错误代码。开始怀疑存在错误,但我希望被证明是错误的
[{"resource": "PullRequest", "field": "head", "code": "invalid"}]
该错误消息试图传达名为“head”的字段/关键字包含无效数据。查看 GitHub 的REST 端点文档:
头:必填。实施更改的分支的名称。对于同一网络中的跨存储库拉取请求,命名空间头带有这样的用户:
username:branch。
按照您当前设置的方式 ( head="patch/helm-chart-update", base="master"),它会转到在线 GitHub 存储库,在那里查找分支patch/helm-chart-update,并尝试准备合并到 master。请注意,如果该分支仅存在于本地(即您尚未完成git push)或者您在 GitHub 上创建了一个分支(在这种情况下,您需要按照描述在其前面加上您的用户名前缀),则此操作将不起作用