2016-12-28 64 views
0

我有一個用例,我需要能夠檢查Git存儲庫作爲Web服務的一部分,並且由於用於視頻遊戲項目,平均回購大小將非常大 - 1GB +。我需要做簡單的操作,如列出修訂歷史記錄等。是否可以遠程訪問和解析git修訂歷史記錄?

現在我正在通過對遠程Git主機服務(Github,Bitbucket等)的API調用來實現它。這工作正常,但是有一些很棒的Git項目,如GitVersion,它們只能用於真正的Git倉庫,使用libGit2sharp,而且我無法輕鬆地編寫工作。

我覺得這會很快,但我想知道是否有人已經討論過或開始實施libGit2sharp,通過它的API與主要的Git主機一起工作。很顯然,並非libGit2中的所有可用操作都可以與API接口一起使用,但至少大多數只讀操作應該是。

如果這是一個全新的功能請求 - 我希望得到具有libGit2sharp代碼庫知識的人的意見,以瞭解這種功能請求要實現的難度。

回答

2

Git僅指定用於獲取,推送和創建歸檔文件的網絡協議。沒有任何東西可以通過Git協議完成(並且提供程序可能會禁用該存檔,以便他們可以利用其現有的緩存解決方案)。

如果這是一個全新的功能請求 - 我希望得到具有libGit2sharp代碼庫知識的人的意見,以瞭解這樣的功能請求將如何實現。

由於Git不提供執行這些任務的方法,因此此功能將超出範圍並且不可能。

一旦你嘗試而不是來做Git,那麼你就不在Git世界中進入每個提供者的API。試圖在每個提供商的API之上覆制Git操作和git命令是一個完整的項目,並且可能會讓你觸及這些提供商的API限制,因爲對存儲庫的深入分析通常不是他們提供的原因這些服務。

更不用說,通過HTTP查找每個必要的對象將是極其緩慢的,你可能沒有獲得任何東西而不是從網絡中獲取一個或兩個千兆字節。但如果你需要的只是幾個可以從API本身輕鬆回答的問題(比如說,最新的提交及其與不同的分支的關係),並且你確實需要GitVersion中的邏輯,那麼你可能會更好關閉,使其歷史分析可插入,所以你可以從你的API查找數據。

我對GitVersion如何做出決定並不熟悉,但是如果它不僅僅需要引用及其與對方和標籤的關係,而是希望查看存儲庫本身,而且您確實需要它不僅僅是複製它的一些邏輯,我會建議下載這些存儲庫並在那裏執行所有的分析。從某個提供者那裏租用一些磁盤空間比試圖將每個提供者的API適配到某個理想化的git命令版本要更高效地利用時間,然後您仍然需要弄清楚兩者的邊界情況該命令及其使用的API。

+0

是的,這對我很有意義。感謝您的建議! –

相關問題