GitHub API:无法可靠地将文件添加到存储库

时间:2018-03-19 13:54:05

标签: ruby-on-rails github github-api octokit

使用Octokit Ruby库,GitHub API遇到了一个非常奇怪的错误。有时,只有将新文件添加到存储库的API请求才会失败,并显示以下消息:

Octokit::UnprocessableEntity: PUT https://api.github.com/repos/organization/repo/contents/config.xml: 422 - Invalid request.

"sha" wasn't supplied. // See: https://developer.github.com/v3/repos/contents/#update-a-file
from C:/Dev/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/octokit-4.8.0/lib/octokit/response/raise_error.rb:16:in `on_complete'

以下是我尝试将整个文件夹的内容上传到GitHub的方法:

Dir.glob(folder + '/**/*') do |path|
  next if File.directory?(path)
  octokit_client.create_contents 'organization/repo', path.sub("#{folder}/", ''), '', File.read(path), branch: 'master'
end

如果发生错误,它会在首次尝试上传文件时执行此操作。

编辑:

我发现只有在上传的第一个文件是.xml文件时才会出现错误。

此外,我经常得到......

Octokit::RepositoryUnavailable
PUT https://api.github.com/repos/organization/repo/contents/icon/_60x60_at1x.png: 403 - Repository access blocked

...对于其他文件,但也是相同的存储库。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

确保文件夹中没有同名的文件。 在这种情况下,您正在编辑文件而不是创建文件。