2010-09-19 135 views
1

如何克隆git回購從我的筆記本電腦(在家中)到服務器(在大學),同時從一個服務器獲得大部分回購第三個(svn)repo在另一個uni這是主要的代碼庫。我想通過最大化uniOne < - > uniTwo流量來儘量減少主頁數量。克隆git-svn回購獲得所有的svn部分從原始svn回購

這是我現在有筆記本電腦:

--o--o--o---o---o---o git-svn trunk 
     `--o--o-o--o git mybranch 

,這是我希望得到的UNIONE:

--o--o--o---o---o---o git-svn trunk <-- from uniTwo 
     `--o--o-o--o git mybranch <-- from Laptop 

克隆回購後應該能夠從筆記本電腦拉分支。

我試過了:在uniOne上:git-svn克隆uniTwo,git遠程添加筆記本電腦,但後來git fetch希望從筆記本電腦獲取整個事情。我想可能使用git clone --depth x Laptop,然後將它們一起移植到一起可能會起作用,但它仍然需要傳輸所有源文件Laptop-> uniOne,而不僅僅是更改。我可以嘗試從筆記本電腦中導出所有補丁,然後將它們應用於新的svn結帳,然後讓它跟蹤我的筆記本電腦上的分支(如果可以的話),但是等到我接下來在uni然後再等待只是正常克隆。

+0

您的uniOne/uniTwo描述有些混亂。你能否更新和澄清?這是我迄今爲止的理解: 您的大學有一個Subversion存儲庫,您必須與之交互。您想要將此SVN存儲庫中的項目複製到Git存儲庫中,然後您可以將它放在筆記本電腦上,對嗎? – 2010-09-28 13:08:12

+0

有兩個unis:一個是svn repo(uniTwo),另一個是我可以訪問大型計算機的時間(uniOne)。我在我的筆記本電腦上開發模擬器並在uniOne上運行它們。關鍵是我家裏的筆記本電腦的上傳速度非常緩慢,所有三臺電腦相隔甚遠。在uniOne上,我希望能夠從筆記本電腦中拉出來,但是儘可能從uniTwo的svn回購中獲得。 – myles 2010-09-29 12:53:15

回答

0

讓我們來定義你的倉庫:

  • 混帳svn的 < - 這是在大學
  • 版本庫
  • UNI /主 < - 這是你的大學的Git倉庫。這是一個「獲取存儲庫」,可以從Subversion倉庫獲取最新的歷史記錄。
  • 筆記本電腦/主 < - 這是您的筆記本電腦上的Git存儲庫。這是你工作的地方。

我建議以下設置:

git svn clone的混帳svn的創建UNI /主。 自動或定期更新uni/mastergit-svn通過運行git svn rebase(觸發器提交掛鉤,cron-job或每次您在Uni時手動)的最新更改。

創建筆記本電腦/主通過克隆uni/master。在這裏,您可以根據需要經常在本地提交。當你在大學時,通過運行git pull --rebase(你總是必須做 - 重新保持歷史線性,因爲SVN不理解git-branches),從uni/master獲得最新更改。

當你想要把您的筆記本電腦變回混帳svn的,你必須配置的git - svn的您筆記本電腦/主第一遙控:

git svn init https://url.to.uni-svn-repo 

現在,你可以把您的最新變化回到uni-svngit svn dcommit。請注意,您可能必須首先更新對uni/master中最新提交的引用。第一:

git update-ref refs/remotes/git-svn refs/remotes/uni/master 

不要試圖從你的筆記本電腦/主UNI /主推。這隻會帶來混亂,因爲重裝/重寫歷史會混淆Git,當它試圖再次與git-svn同步。

另請參見http://www.tfnico.com/presentations/git-and-subversion其中我已經開始收集了一些與Git和SVN一起工作的技巧。