【发布时间】:2020-09-05 21:19:46
【问题描述】:
最近我一直在尝试使用 pyGithub 在使用此代码段在一堆存储库中运行 make update 后创建一些自动化 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
我一直从 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"}
当然,我的第一个猜测是我打错了 repo 名称,但事实并非如此。奇怪的是,当我用不存在的分支名称(如“someGarbage”)替换头部名称时,我得到了一个相同的错误。
接下来,我认为 PR 可能存在冲突或其他无效细节(尽管由于我正在使用的测试分支的简单性,这极不可能),但 Github GUI 创建 PR 时没有任何问题。
最终我能够使用 https://pypi.org/project/git-pull-request/ 进行 PR,但不幸的是,我看不到避免它在 shell 中打开 vim 的方法(由于这将运行的 repos 数量,这会产生很多麻烦在)。如果一切都失败了,我很可能只使用请求来手动调用 Github API,但我真的很想使用 pyGithub,既可以保持代码简单/可维护(因为我已经使用该库来搜索目标 repos 并将它们克隆到 /tmp) 并且因为它通常看起来是一个很好的工具,我想学习使用它。
抱歉,由于问题的性质,这不是最可重现的,但我很乐意详细说明细节。有什么想法吗?
更新
在使用requests 调用实现此功能后,感谢this post,如果您使用“params”参数进行调用以将json 对象而不是“json”参数传递给POST 请求,您得到相同的错误代码。开始怀疑一个错误,但我很想被证明是错误的
【问题讨论】:
-
打开编辑器是为了什么?创建提交?合并提交?拉取请求描述?您可以在运行 git-pull-request 脚本之前尝试运行
export EDITOR=true吗?
标签: python git github-api pygithub