簡體   English   中英

從單個回購中使用硬鏈接進行多個git checkout?

[英]Multiple git checkouts from a single repo with hardlinks?

有誰知道一種基於硬鏈接獲取大量“只讀” git存儲庫的方法? 換句話說,我希望約500MB存儲庫中的后續工作目錄僅是硬鏈接,因此僅幾個KB。

除此之外,對我以下的精神錯亂的任何反饋都表示贊賞。


好的,現在背景:

我正在構建一個質量保證工具,希望能夠在其中發揮作用:

1f381de1.somesite.com
9e010d42.somesite.com
...etc

由於這些項目包含由apache托管的動態文件(例如php ),因此我無法通過git show類的管道來傳遞所有輸出,或者我很樂意(如果有人知道這樣做的可能方法,我會喜歡聽到它)。

我不想為每個我想打的版本做一個git clonegit-new-workdir ,因為我將在倉庫中復制所有實時文件。 因為我不想不斷地垃圾收集該項目,所以一次可能會有一百個版本或更多的“活動”,並且我不想將一個約500MB的項目復制100次。

因此,理想情況下,應存在一些工具,該工具可讓我基於硬鏈接獲得多個只讀簽出。 如果沒有,我目前的想法是:

  • 檢出存儲庫
    • 制作一個“未壓縮的對象”文件夾
    • 如有必要,解壓縮.pack文件
  • 我想要一個新版本:
    • 制作目錄
    • git catfile -p解壓縮樹的提交日志
    • 將每個對象解壓縮到“未壓縮的對象”文件夾中(如果尚不存在)
    • 必要時走樹,重復上述步驟
    • 在新文件夾中創建到每個未壓縮對象的硬鏈接

最終結果是,我擁有.git/objects使用的所有文件的未壓縮版本,而新簽出中的每個文件都是指向該目錄中某個文件的硬鏈接。

考慮到這一點,我遇到了我所聽說過的FUSE,但從未真正使用過或煩惱過將其包裹在真正的頭上。 它允許我做我認為不可能的事情-將git show命令代理到操作系統級別的文件請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM