如何通过内容API在github上创建文件时指定分支?

时间:2014-04-10 22:00:13

标签: ruby github github-api rest-client

我正在尝试通过API在github上的某个分支中创建一个文件,但是没有找到一种方法来成功设置分支以获取或创建文件。这是我的方法:

   def self.save_file_to_github access_token, github_user, github_repo, path, content, branch

     sha = nil
     url = "https://api.github.com/repos/#{github_user}/#{github_repo}/contents/#{path}"
     RestClient.get(url,{ params:{access_token:access_token,branch:branch},accept:'json'}){ |response, request, result| 
         if response.code==200 
           sha=JSON.parse(response)['sha']
         end
     }

     RestClient.put(url, { message: "my message", content: Base64.strict_encode64(content), sha: sha }.to_json,{ params:{access_token:access_token},accept:'json'}){ |response, request, result| 
        puts response.code
        puts response
     }

   end 

首先检查文件是否存在,获取sha1密钥。然后把它放到新文件中。这一切都很好,我找不到一种方法来获取文件并重新放置它时指定分支。如何指定分支?

1 个答案:

答案 0 :(得分:1)

您在Repo APIretrieve文件中使用的操作,如果其中包含默认为ref的参数master科。将其替换为您需要的分支。

对于creating文件,API中的参数称为branch,并再次默认为master。将此设置为您需要的分支,您应该很高兴。像这样:

def self.save_file_to_github access_token, github_user, github_repo, path, content, branch

  sha = nil
  url = "https://api.github.com/repos/#{github_user}/#{github_repo}/contents/#{path}"
  RestClient.get(url,{ params:{access_token:access_token, ref: branch},accept:'json'}){ |response, request, result| 
    if response.code==200 
      sha=JSON.parse(response)['sha']
    end
  }

  RestClient.put(url, { message: "my message", content: Base64.strict_encode64(content), branch: branch, sha: sha }.to_json,{ params:{access_token:access_token},accept:'json'}){ |response, request, result| 
    puts response.code
    puts response
  }

end