Git 常用的幾種處理大型二進制文件的組件

jopen 8年前發布 | 9K 次閱讀

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 同步處理。

優點:
    使用透明

缺點:
    僅支持rsync的作為后端。

Git media : 可能是可供選擇的最古老的多媒體處理方案。 Git media使用類似過濾器,并支持亞馬遜的S3,本地文件系統路徑,SCP,ATMOS和WebDAV作為后端存儲大文件。 Git media是用Ruby編寫的。

優點:
    支持多種后端
    使用透明
缺點:
    不再發展。
    含糊的命令(e.g. git update-index --really refresh))。
    并不完全與Windows兼容。

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,因為它會被長期支持。

來自: http://www.oschina.net//news/71365/git-annex-lfs-bigfiles-fat-media-bigstore-sym

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!