2012-05-30 57 views
1

這是情況。我在服務器A上有一個遠程git倉庫。另外,我必須在這個倉庫中使用相同的源代碼在桌面B上工作。由於訪問服務器A的帶寬有限,我想在桌面B上爲存儲庫設置本地鏡像。現在如何設置鏡像遠程git存儲庫的本地目錄?

,我已經

git clone file://localhost/local/repo/path.git 

建立鏡像版本庫由

git clone --mirror https://repository-on-server-a /local/repo/path.git 

我已經測試過的本地倉庫。然後我修改的crontab做

cd /local/repo/path git fetch -q 

同步每5分鐘一次。它運作良好。

在開始的時候,我想使用

git config --global url.file://localhost/local/repo/path.git.insteadOf https://repository-on-server-a 

來讓Git獲取從本地目錄,而不是遠程回購的所有對象。但是,它不起作用。

我的問題是

  1. 有沒有一種簡單的方法來建立這樣的本地鏡像的遠程混帳回購協議?
  2. 如何處理'git push'?由於insteadOf將獲得每一次進入本地目錄,我怎麼能把所有的變化推回到服務器A?

本地目錄是一個考驗,但不是最終的解決方案。我將有另一個Desktop C稍後從桌面B獲取源代碼。另一位同事也會加入我。這意味着我們希望將桌面B的所有更改都爲我們提供一些「中心」解決方案。

回答

5

鏡子是什麼鏡子?您的本地git工作目錄已經原始資源庫的鏡像;這就是DVCS的工作原理。我不明白你的文件系統上的第二個本地副本的好處。

編輯 如果你想用你的回購協議作爲本地網絡採集點之一爲您的網絡的其餘部分和上游原點之間的變化,那麼cron作業是好的。只要它在fetch -a之後執行push --mirror

但是,我不打擾代理/別名設置。只需讓每個人都克隆並明確推送到您的本地鏡像;這樣,如果他們出於某種原因需要找到真正的原產地,它不會妨礙他們。他們甚至可以將這兩個URL設置爲遙控器,默認情況下使用本地URL,如果需要,可以使用遠程名稱提供真實的URL。

+0

好像重新發明輪子。 –

+0

同意。這點沒有任何意義。 – wadesworld

+0

本地目錄用於測試。我在描述中沒有提到的最後一步是我將使用其他計算機Desktop C從桌面B獲取源代碼。「本地目錄」用於測試此解決方案。 – jcadam

相關問題