2009-04-14 115 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