在代碼倉庫體積較大或網路狀況不佳的情況下,推拉倉庫需要大量的時間,隨之而來的可能還有逾時等問題。目前,Codeup已經支援了Git LFS(大檔案儲存體)和部分複製、淺複製等特性,以緩解此類問題,降低本地磁碟空間的佔用,減少推拉倉庫所需的時間,可以在大倉庫的情境下帶來更加高效的使用體驗。
Git LFS適用的情境
Git LFS,即Git-LFS 大檔案儲存體,如果程式碼程式庫有以下特徵,那麼非常建議您開始使用Git LFS:
向代碼倉庫中提交了非文字檔,導致倉庫體積迅速膨脹
在某些情境下,需要向倉庫中提交一些非文字檔,例如美術資源、演算法模型、編譯產物等。由於二進位檔案體積較大且更難壓縮,加上 Git 會儲存這些檔案的每一歷史版本,倉庫體積迅速膨脹。在複製倉庫時,所有檔案的所有歷史版本均會被下載,這也是複製時間增長的根源。
使用Git LFS,可以配置特定尾碼的檔案使用 Git LFS 管理,複製時不下載這些檔案的歷史版本,大大降低複製的資料量及所需的時間。
Git LFS的使用及注意事項
以下詳盡的文檔將協助您開始使用 Git LFS,請參見:
淺複製適用的情境-應用構建
應用構建只需要最新版本的代碼,不必要花費大量時間下載全部代碼。這時候可以使用淺複製特性,截斷倉庫的歷史,僅下載給定深度內的提交用於最新構建,可以大幅降低拉取時間。淺複製的使用,請參見git clone 協助文檔。
部分複製適用的情境
部分複製特性,允許複製倉庫時只複製部分的倉庫。與淺複製不同,部分複製不截斷倉庫的歷史資訊,缺失的檔案則會在被用到時按需下載。在以下情境,可以考慮使用部分複製特性:
倉庫的體積較大
即使沒有向倉庫中提交二進位檔案,隨著開發人員的持續提交,倉庫的體積也會隨之逐漸增長,複製時間也逐漸增加。在開發時,往往基於代碼的最新版本進行修改,並偶爾的使用到歷史資訊。使用部分複製特性,可以在複製時過濾歷史版本,加快複製速度,並在需要歷史資訊時自動下載。
微服務單根代碼倉
在這種情境下,所有的代碼都存放於一個大的單根代碼倉中,例如安卓開發。部分複製配合稀疏檢出,可以使倉庫中的不同成員只下載其關心的部分代碼,不需要每次都下載全部倉庫內容。
部分複製相關協助文檔,請參見:部分複製(Partial clone)介紹。
總結
以下這些特性的使用,並不只局限於上文所列情境,功能也不相衝突,可以根據實際情況,靈活結合使用:
Git LFS:適用於倉庫中包含了各類二進位檔案導致的倉庫體積膨脹情境。對於倉庫體積超過 Git 容量閾值的情況,需要將二進位檔案移至 Git-LFS 進行管理。
淺複製:適用於只需要複製給定深度內的倉庫,並且不需要倉庫的歷史資訊的情況。在構建加速等情境下非常適用。
部分複製:可以保留倉庫的歷史資訊,並按照對象的類型或者配合稀疏檢出按照目錄下載對象,在用到缺失的對象時自動按需下載。