我知道如何通过API获取文件的提交,以及SHA和所有好东西。
但是,假设我只想在1次提交中使用文件的差异,或者在两次提交中使用相同文件的差异。
例如,在this commit中,我想只需要, :counter_sql
中的activerecord/lib/active_record/associations.rb
。
如何通过API获取差异数据?
我正在使用Octokit.rb。
修改1
似乎这可能per this blog post,但我不确定如何使用Octokit。
修改2
所以,我有点一点一点地搞清楚。
要获得两次提交之间的差异数据,我可以比较two commits like this。
所以,假设两个变量a
和b
中的两个提交都有两个SHA,我会这样做:
client = Octokit::Client.new(access_token: ENV["MY_ACCESS_TOKEN"])
comparison = client.compare("rails/rails", a, b, path: "activerecord/lib/active_record/associations.rb")
这个问题导致两次提交之间存在差异,包括对许多其他文件的更改以及我不想要的大量信息。
我想要的只是这两个提交中来自此特定文件的差异。
我还没想出怎么做。
思想?
答案 0 :(得分:2)
不,不可能。
您可以使用Compare API来获取两次提交之间的差异,这将包括所有文件,而不仅仅是您感兴趣的文件,如您所观察到的那样。所以你需要在你的头上做一些过滤。
另一种方法可能是在提交X然后在提交Y处获取文件的内容,然后在您的端部计算这两个版本的文件之间的差异(通常没有用于区分的GitHub API)。您可以使用Contents API来获取文件的原始版本。
https://developer.github.com/v3/repos/contents/#get-contents