我可以通过 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。
所以,假设我在两个变量 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")
这个问题是这导致两次提交之间存在差异,其中包括对许多其他文件的更改和大量我不想要的信息。
我想要的只是这两个提交与这个特定文件的差异。
我还没想好怎么做。
想法?
不,不可能。
您可以使用比较 API 来获取两次提交之间的差异,这将包括所有文件,而不仅仅是您所观察到的感兴趣的文件。所以你需要在你这边做一些过滤。
另一种方法可能是在提交 X 和提交 Y 时获取文件的内容,然后在您这边计算这两个文件版本之间的差异(没有 GitHub API 用于一般差异)。您可以使用 Contents API 来获取文件的原始版本。
https://developer.github.com/v3/repos/contents/#get-contents
我知道如何通过 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。
所以,假设我在两个变量 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")
这个问题是这导致两次提交之间存在差异,其中包括对许多其他文件的更改和大量我不想要的信息。
我想要的只是这两个提交与这个特定文件的差异。
我还没想好怎么做。
想法?
不,不可能。
您可以使用比较 API 来获取两次提交之间的差异,这将包括所有文件,而不仅仅是您所观察到的感兴趣的文件。所以你需要在你这边做一些过滤。
另一种方法可能是在提交 X 和提交 Y 时获取文件的内容,然后在您这边计算这两个文件版本之间的差异(没有 GitHub API 用于一般差异)。您可以使用 Contents API 来获取文件的原始版本。
https://developer.github.com/v3/repos/contents/#get-contents