天天看點

Git 常用的幾種處理大型二進制檔案的元件

Git 常用的幾種處理大型二進制檔案的元件

git大檔案存儲(large file storage,簡稱lfs)的目标是更好地把“大型二進制檔案,比如音頻檔案、資料集、圖像和視訊”內建到git的工作流中。衆所周知,git在存儲二 進制檔案時效率不高,因為:git預設會壓縮并存儲二進制檔案的所有完整版本,如果二進制檔案很多,這種做法顯然不是最優。是以,在git倉庫處理大量的二進制檔案似乎是很多git使用者的瓶頸。由于git的分散性,這意味着每個開發人員對檔案的操作是變化的,對二進制檔案的更改導緻git倉庫檔案不斷變化增長。當資料檔案需要恢複的時候,這就變成一個很難操作的問題。存儲虛拟機映像的快照,改變其狀态,并存儲新的狀态到git倉庫将與各自的快照的大小約為成長庫的大小。如果這是你的團隊每天的日常運作,你可能已經感受到來自過度腫脹git倉庫的痛苦。

本文将介紹幾種常用的處理大型二進制檔案的元件,旨在為你解決上述問題。

git annex : 允許映射 git 資料庫到檔案,git annex 采用 haskell script 編寫。

git lfs : 一個指令行擴充和規範用于利用git來管理大檔案。其用戶端采用go開發,為mac, windows, linux, and freebsd提供預編譯好的binaries。

git bigfiles : 提供了python接口,允許使用者處理沒有存儲在git上的大檔案。

優點:

git 操作可以復原。

可以設定檔案大小的門檻值,以限定“大檔案”這個概念。

缺點:

存在相容性問題。

git fat : 可以簡單的處理一些比較大的檔案,而無需送出到git。同時,git-fat 也支援 rsync 同步處理。

git media : 可能是可供選擇的最古老的多媒體處理方案。 git media使用類似過濾器,并支援亞馬遜的s3,本地檔案系統路徑,scp,atmos和webdav作為後端存儲大檔案。 git media是用ruby編寫的。

git bigstore : 最初實作是作為 git media 替代品。它支援amazon s3的,谷歌雲端存儲或rackspace公司雲帳戶作為後端存儲二進制檔案。git bigstore 提高協同開發時的穩定性。 git bigstore是根據apache 2.0許可授權。git bigstore是用python編寫,需要python2.7以上的運作環境。

僅需要python2.7以上運作環境

使用透明

目前隻支援基于雲存儲。

git sym : 是一款通過git符号連結的進行大檔案處理的軟體,其目的是從修訂控制中分離出龐大的檔案緩存。

結論:

有多種方式來處理git倉庫大型二進制檔案,其中許多人使用幾乎相同的工作流程和方法來處理這些檔案。然而,一些解決方案都不再積極開發,是以,選擇一個有技術支援的解決方案尤為重要。如果windows支援或透明度是一個必須具備的條件,你最好選擇git lfs,因為它會被長期支援。

====================================分割線================================