使用GitHub API获取diff中特定行的链接?

时间:2017-07-28 06:26:14

标签: github diff github-api

使用GitHub API我正在寻找一种方法来生成与diff中特定行的链接。

我已经可以构建一个"比较提交和#34;网址,例如: https://github.com/emmetog/feature-flags/compare/master...d8f9c29bfd0b87d26123b78b76feca8e4c87ad8

在浏览器中访问该网址,我可以点击特定的一行,我得到了这个: https://github.com/emmetog/feature-flags/compare/master...d8f9c29bfd0b87d26123b78b76feca8e4c87ad8#diff-21171d4ef87ca8e3591556dd18dfa456R26

但是,我需要以编程方式通过github api生成最后一位#diff-21171d4ef87ca8e3591556dd18dfa456R26位,否则找到另一种链接到diff中特定行的方法而不通过浏览器。

这可能吗?

2 个答案:

答案 0 :(得分:0)

这是不可能的。

  1. 我看了https://developer.github.com/v3/repos/commits/#compare-two-commits

  2. 我试过了 curl https://github.com/emmetog/feature-flags/compare/master...d8f9c29bfd0b87d26123b78b76feca8e4c87ad8

  3. 通过使用GitHub API,我们无法指定新版本和旧版本文件src/Emmetog/FeatureFlag/Entity/FeatureFlag.php之间的第26行不同之处 因为在第26行没有发生2次修改的差异,所以不可能进行比较。或者文件src/Emmetog/FeatureFlag/Entity/FeatureFlag.php只有10行代码,无法进行比较。

  4. 在HTML网页中,id = diff-21171d4ef87ca8e3591556dd18dfa456R26是自动生成的ID。在执行GitHub API请求之前,我们无法指定有意的方式。

答案 1 :(得分:0)

这可能不是最好的方法,但看起来你可以做一些webscraping。

例如。在您提供的链接中。该行包含以下元素:

<td id="diff-21171d4ef87ca8e3591556dd18dfa456R26"
data-line-number="26" class="blob-num blob-num-addition
js-linkable-line-number selected-line"></td>

其中包含diff hash。你也有行号(26)。现在你只需要diff hash和行号之间的'R'。我相信,这是通过添加或删除该行来给出的。你可以从css类'blob-num-addition'中得到它。看起来'blob-num-addition'对应'R','blob-num-addition'对应'L'