簡體   English   中英

Git克隆裸回購沒有斑點

[英]Git clone bare repo without blobs

在我的git信息庫中,我使用一種算法,根據分支名稱和標簽,為每個提交分配一個或多個唯一的版本號。 我想將此機制與另一個大型存儲庫一起使用,我想在不傳輸任何文件的情況下進行克隆。

裸克隆可以幫助我擺脫Blob的工作副本,但仍會從服務器下載它們。 具有--depth 1淺表克隆會跳過大多數blob,但是還會跳過下載除一次以外的所有提交的元數據。

是否有諸如git fast-export --no-data類的東西可以在客戶端使用,以獲取包含提交元數據甚至文件名的圖形信息,而無需先從服務器上克隆存儲庫? 理想情況下,我將能夠通過git log|show|rev-parse|show-ref來訪問元數據,就像其他任何(裸,淺)倉庫一樣。

(我知道git LFS和git Annex存在,並且可以幫助減小某些存儲庫的大小,但是我不能在不更改現有存儲庫的情況下使用它們。)

是否有像git fast-export --no-data這樣的東西可以在客戶端使用?

否:除了git ls-remote (僅獲取遠程倉庫的元數據)外,其他任何東西都將獲得完整的倉庫歷史記錄。

您將需要由Git托管服務(例如GitHub)來管理您的存儲庫,該服務提供一個API(例如commits API ),以便查詢沒有數據的元數據。

此后的另一個想法是:從2017年開始,pack-protocol現在允許部分克隆 ,並且--filter=blob:none可用 ,它會忽略所有--filter=blob:none在服務器端應該足夠了。

遺憾的是,考慮到當前的服務器端實現,這種方法並不像人們希望的那樣有效:

C:\Users\phi1010>git clone https://github.com/torvalds/linux.git --filter=blob:none
Cloning into 'linux'...
warning: filtering not recognized by server, ignoring
remote: Enumerating objects: 6876195, done.
[...]

Github甚至宣布了對v2協議及其過濾功能的支持 ,但這不能與-c protocol.version=2 ,正如GitHub和GitLab是否支持git clone的--filter參數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM