Gitee 目前已經初步支持 Git 部分克隆

 

最近 Git 2.25.0 發佈,此次發佈推出了 partial clones 功能,partial clones 即用戶克隆遠程存儲庫的時候,可以選擇只下載自身所需的對象,而不是存儲庫的所有對像(或者特定 commit 所關聯的所有對像)。這和微軟之前發佈的 VFSForGit 原理有異曲同工之妙。使用部分克隆可以大大的減小用戶克隆巨大存儲庫的耗時,也會減小網絡數據傳輸。部分克隆完全依賴 Git Wire Protocol (v2 Protocol)。經過幾行代碼的適配和線上的批量更新,Gitee 目前已經支持部分克隆了,當你的 Git 版本大於等於 2.25.0,則可以使用如下的命令克隆特定的存儲庫:

git -c protocol.version=2 clone --filter=blob:none [email protected]:YOUR-COUNT/YOUR-REPO.git

在這個命令中 -c protocol.version=2 確保始終使用 v2 協議(當然可以 git config -g protocol.version=2 設置始終使用 v2 協議), --filter 則對克隆過程進行過濾,詳細說明如下:

更多的部分克隆過濾器參數信息可以參考:rev-list-options.txt#L735-L780

基於部分克隆實現稀疏檢出(這裏需要提前設置 git -c protocol.version=2):

$ git clone --filter=blob:none --no-checkout /your/repository/here repo
$ cd repo
$ cat >.git/info/sparse-checkout <<EOF
/*
!/*
EOF
$ git config core.sparseCheckout 1
$ git checkout .

關於稀疏檢出的更多細節可以參考相關文檔。

與淺表克隆不同的是,部分克隆能夠創建提交,這和微軟發佈的 VFSforGit 類似,但 VFSforGit 實現了文件系統驅動級別的過濾器,可以使用文件系統佔位符避免文件的下載,在讀寫這些文件時,ProjFS 則會從遠程存儲庫下載這些文件。綜合來看,Git 的部分克隆是一個巨大的進步,但還有很大的進步空間。

Git 2.25.0 更新信息如下:

發佈了90 篇原創文章 · 獲贊 16 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章