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

Can I get the diff data for one file between two commits via the GH API?

我知道如何通过 API 获取文件的提交,以及 SHA 和所有这些好东西。

但是,假设我只想要一个文件在 1 次提交中的差异或同一文件在两次提交中的差异。

例如,在 this commit 中,假设我只想要 activerecord/lib/active_record/associations.rb 中的 , :counter_sql

如何通过 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")

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

我想要的只是这两个提交与这个特定文件的差异。

我还没想好怎么做。

想法?

不,不可能。

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

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

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