2009-04-14 103 views
40

我知道你可以通過使用git svn init跟蹤一個使用git的svn repo,但是如果你想創建一個全新的repo,添加svn回購到現有的git回購?

我的情況是,我目前已經有一個現有的git倉庫,並且希望通過在我當前的git倉庫中將其作爲遠程分支來跟蹤svn倉庫的主幹。

有什麼建議嗎?

+0

我想這個答案也是正確的位置:HTTP: //stackoverflow.com/a/1430782/1046584 – 2016-02-10 15:48:46

回答

2

其實,這是什麼混帳SVN init卻 - 其他的git svn的命令簡單地合併在一起的東西,等你可以的git的svn init和/或複製SVN的佈局回購與GIT SVN克隆克隆,你應該只需要拉入本地分支或取回等等。花一些時間在git svn的man page上,你不應該在拼湊一些東西時遇到太多麻煩;如果你這樣做,freenode上的#git是一個很好的資源。所以,這應該可以沒有太多的麻煩,但我不知道如何做到這一切。

+1

+1 #git。這對我來說是一個很好的資源。 – Abizern 2009-04-14 03:23:24

+0

爲了說明這是`git svn init`所做的+1。 – 2013-03-18 17:50:25

12

1)定義新的分支中的.git /配置:

[svn-remote "release-branch"] 
     url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs 
     fetch = :refs/remotes/git-svn-release-branch 

2)導入SVN分支。 SVN_BRANCHED_REVISION是SVN中分支發生的修改。

[~]$ git svn fetch release-branch -r SVN_BRANCHED_REVISION 

3)連接一臺本地的Git分支到遠程分支:

[~]$ git branch --track release git-svn-release-branch 

5)檢出和更新

[~]$ git checkout release 
[~]$ git svn rebase 
3

您可以通過執行找到SVN_BRANCHED_REVISION:

$ svn log --stop-on-copy PATH_TO_BRANCH 
1

答案爲th是問題(https://stackoverflow.com/a/840411https://stackoverflow.com/a/7592152)不再適用於Git v1.8.3.2(https://stackoverflow.com/a/19833311)。你可以這樣做,而不是:

1)定義新的分支。git的中/配置:

[svn-remote "release-branch"] 
    url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs 
    fetch = :refs/remotes/git-svn-release-branch 

2)導入SVN分支。 SVN_BRANCHED_REVISION是SVN中分支發生的修改。

$ git svn fetch release-branch -r SVN_BRANCHED_REVISION 

3)創建分支和掛接本地的Git分支到遠程分支:

$ git checkout -b release refs/remotes/git-svn-release-branch 

5)更新

$ git svn rebase