毫無疑問,Git 很是適合用於代碼文件的版本控制。對於純代碼倉庫,因爲每次實際提交都是增量內容,即便倉庫經歷了幾十次提交,整個倉庫的大小每每都不會大幅增長。微信
而對於存在二進制文件的倉庫,狀況就變了:Git 並不能很好地支持二進制文件的增量提交,每次更新一個二進制文件,就至關於把這份文件的完整內容再往倉庫裏扔。長此以往,這個倉庫就會變得很是大,影響代碼拉取速度。框架
舉一個實際的例子,爲了加快應用的構建速度,咱們團隊的框架先會編譯成 SDK ,再交由上層構建應用。框架 SDK 也是一個獨立的 Git 倉庫,裏頭包含了大量的二進制包:spa
由於框架也有多個分支,每一個分支的迭代速度比較快,SDK 倉庫的體積在三個月的時間內就膨脹到了 1G 。.net
如此龐大的倉庫體積讓第一次拉代碼的同事叫苦連天。一次全新的 clone ,即便拉取速度達到了 5.01 MB/s,在 framework 這個模塊上就須要花上大約 7 分鐘的時間:版本控制
當不少人同時拉代碼時,還有很大機率由於 HTTP 超時而拉取失敗:
blog
爲了解決這個問題,我前後嘗試了幾種方案。
get
(舒適提示:請點擊左下角【閱讀原文】閱讀完整的文章。)it
本文分享自微信公衆號 - HaHack(gh_12d2fe363c80)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。io