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。
提供了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