2017-07-28 74 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'

相關問題