使用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中特定行的方法而不通过浏览器。
这可能吗?
答案 0 :(得分:0)
这是不可能的。
我看了https://developer.github.com/v3/repos/commits/#compare-two-commits
我试过了
curl https://github.com/emmetog/feature-flags/compare/master...d8f9c29bfd0b87d26123b78b76feca8e4c87ad8
通过使用GitHub API,我们无法指定新版本和旧版本文件src/Emmetog/FeatureFlag/Entity/FeatureFlag.php
之间的第26行不同之处
因为在第26行没有发生2次修改的差异,所以不可能进行比较。或者文件src/Emmetog/FeatureFlag/Entity/FeatureFlag.php
只有10行代码,无法进行比较。
在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'