2017-07-28 44 views
0

使用GitHub API我正在寻找一种方法来生成一个指向差异中的特定线路的链接。使用GitHub API获取diff中特定行的链接?

我已经可以contruct一“之间的比较提交” URL,例如: https://github.com/emmetog/feature-flags/compare/master...d8f9c29bfd0b87d26123b78b76feca8e4c87ad8

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

但是,我需要通过编程方式生成最后一位,即#diff-21171d4ef87ca8e3591556dd18dfa456R26位,或者通过另一种方式链接到diff中的特定行,而无需通过浏览器。

这可能吗?

回答

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日 由于2行修订的差异不在26行发生,所以不可能进行比较。或者文件src/Emmetog/FeatureFlag/Entity/FeatureFlag.php只有10行代码,这是不可能比较的。

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

0

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

例如。在你提供的链接中。该行包含此元素:

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

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

相关问题