2014-06-18 38 views
3

我創建一個淺克隆指定標籤:做一個淺淺的Git倉庫少淺

git clone --branch v0.1.3 --depth 1 file:///c/usr/sites/smc . 

在此之後,克隆的回購只有在它的標籤v0.1.3(及相關文件)。 它沒有在該標籤之前或之後的所有變化的歷史記錄(據我所知 - 如果錯誤糾正我。) 接下來,我想更新克隆以包括v0.1.4。 如果我使用「git fetch --unshallow」命令,那麼我會得到完整的歷史記錄,這是我不想要的。 有沒有辦法擴展我的克隆,以包括從主(如v0.1.4和0.1.5)更新的歷史,但不是舊的歷史記錄(如0.1.2)? (我看到一個選項叫做更新淺,但不明白它做什麼或者是否是相關的)

這樣做的目的是:

1)充分利用資源庫的初始設置遙控器上服務器通過不克隆整個回購來快速和小型化。 (我們的回購主要是二進制文件:DLL,EXE。)

2)可以將遠程回購升級到更高版本(由標籤給出),但從未更早的版本。這種升級只會傳輸一部分存儲庫,所以它也應該很快。

注:我的Git版本是Windows 7上的1.9.2.msysgit.0。這包括最近對淺層克隆的增強。 我們可能會託管Linux上的主要存儲庫,但我們部署的代理運行Windows。 意圖是使用puppet企業管理結賬。

更新: 試過VonC的建議。

$ git fetch --update-shallow origin v0.1.4 
remote: Counting objects: 6, done. 
remote: Compressing objects: 100% (4/4), done. 
remote: Total 4 (delta 2), reused 0 (delta 0) 
Unpacking objects: 100% (4/4), done. 
From file:///c/usr/sites/smc 
* tag    v0.1.4  -> FETCH_HEAD 

[email protected] /c/usr/sites/smc-clone3 ((v0.1.3)) 
$ git describe 
v0.1.3 

[email protected] /c/usr/sites/smc-clone3 ((v0.1.3)) 
$ git tag --list 
v0.1.3 

雖然該命令似乎有所作爲,但我在目標回購庫中看不到標籤v0.1.4。但是,如果使用--tags選項,我可以獲得所有標籤,但也可以獲得所有歷史記錄! 另外,我不理解git fetch命令輸出中的符號「FETCH_HEAD」。

UPDATE: 進一步的研究表明,這太問題是類似的目標後: git shallow clone to specific tag

+1

更新淺v0.1.3或標籤v0.1.3在https://github.com/git/git提到/ commit/48d25cae22667dfc2c31ad620172c0f0a3ac1490和https://github.com/git/git/commit/16094885ca94f72abc28a915f9aa4021e203a16d。你嘗試過'git fetch --update-shallow origin v0.1.4'嗎? – VonC

+0

@VonC:感謝您的鏈接。我的源代碼倉庫不淺,而我的目標很淺,所以根據您的信息,它看起來像--update-shallow不是我想要的,但我會嘗試。 –

回答

2

看來我不得不這樣類似的問題,發現這事後。訣竅是在fetch命令的末尾和深度指定完整的refspec。裁判/標籤/ v0.1.3:裁判/標籤/短

Git shallow fetch of a new tag

git fetch --depth 1 origin tag v0.1.4