我可以通过GH API在两次提交之间获取一个文件的差异数据吗?

时间:2016-07-17 01:46:12

标签: ruby github github-api octokit

我知道如何通过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

所以,假设两个变量ab中的两个提交都有两个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")

这个问题导致两次提交之间存在差异,包括对许多其他文件的更改以及我不想要的大量信息。

我想要的只是这两个提交中来自此特定文件的差异。

我还没想出怎么做。

思想?

1 个答案:

答案 0 :(得分:2)

不,不可能。

您可以使用Compare API来获取两次提交之间的差异,这将包括所有文件,而不仅仅是您感兴趣的文件,如您所观察到的那样。所以你需要在你的头上做一些过滤。

另一种方法可能是在提交X然后在提交Y处获取文件的内容,然后在您的端部计算这两个版本的文件之间的差异(通常没有用于区分的GitHub API)。您可以使用Contents API来获取文件的原始版本。

https://developer.github.com/v3/repos/contents/#get-contents