2012-10-30 102 views
5

在我們試圖引入Git的組織中,我們現在有一個關於二進制文件的Git行爲的問題。
我們的項目將包含二進制和文本類型文件的良好組合,典型大小可能爲1 GB。我們擔心的是,幾年後,完整的克隆將變得太大,並導致性能和磁盤空間問題。
遷移到Git的環境之一是其SW目前位於名爲TCM的系統上。版本爲7至10年的存儲庫的總大小爲2 TB。
ClearCase上的另一個環境大約有7 - 8年的數據大約1 TB。
由於Git沒有存儲在特別影響二進制文件的deltas中,5年以上的情況正在引起用戶的關注。
淺克隆功能本來是理想的。但文件說這個「淺層存儲庫有一些限制(你不能從中克隆或取出,也不能從中推入或推入),但如果你只關心一個長期大項目的最近歷史歷史,並希望將補丁發送給補丁。「對淺層克隆進行粗略的檢查會發現它工作正常,但是肯定有已知的用例,它不會工作,因此文檔
是否有已知的使用情況列表,這種情況不適用?什麼是淺克隆的限制

+2

更新:自git V1.9以來,淺層克隆的大多數侷限性都已解決。 – sleske

+0

Git 2.5(Q2 2015)支持單個提取提交!我在下面編輯了我的答案,現在引用「[從遠程git存儲庫中提取特定提交](http://stackoverflow.com/a/30701724/6309)」。 – VonC

+0

VTC不清楚。文檔給出了它不能做什麼的完整摘要。一個「用例列表」就是你可以想象到的那些使用這些操作的東西。這是一個無限的集合,因此不可能做出答案。 –

回答

3

我強烈建議您將二進制文件存儲在專用存儲庫中,易於擴展並易於清理:像Nexus這樣的工件回購。
在「How to handle a large git repository?」中有其他選擇。

試圖把一切都在Git的,在某些不自然的方式使用它,總是會導致更多的麻煩是值得的:它是一個控制工具。你不妨將它用於它的好處。

這就是說,淺層克隆不支持推送(或者,至少,它是危險的:請參閱「Why can't I push from a shallow clone?」)。
對於只讀目的,簡單的git archive就足夠了,如「not understanding git shallow clone」中所述。

更新2015年:

1

Git Annex相當漂亮地解決了「big-binary-files in/near git」問題。