2

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

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

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

如何通过 API 获取该差异数据?

我正在使用 Octokit.rb。

编辑 1

根据这篇博客文章,这似乎是可能的,但我只是不确定如何使用 Octokit 来做到这一点。

编辑 2

所以,我有点想一点一点。

要获取两个提交之间的差异数据,我可以像这样比较两个提交

a所以,假设我在两个变量中都有两个提交的两个 SHA b,我会做这样的事情:

client = Octokit::Client.new(access_token: ENV["MY_ACCESS_TOKEN"])
comparison = client.compare("rails/rails", a, b, path: "activerecord/lib/active_record/associations.rb")

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

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

我还没想好怎么做。

想法?

4

1 回答 1

2

不,不可能。

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

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

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

于 2016-07-17T20:42:54.763 回答