将svn repo添加到现有的git repo中?

时间:2009-04-14 02:38:59

标签: svn git git-svn

我知道你可以使用git svn init跟踪一个带有git的svn repo,但是如果你想创建一个全新的repo,那就是这样。

我的情况是,我目前已经有了一个现有的git repo,并希望通过在当前的git仓库中将其作为远程分支来跟踪svn repo的主干。

有什么建议吗?

5 个答案:

答案 0 :(得分:22)

昨晚搜索后,我终于找到了答案:

http://i-nz.net/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/

似乎你必须实际进入并手动编辑.git / config文件,以便将svn分支添加到现有的git repo中。因此,根据这些说明,我必须为每个分支添加一个条目。

答案 1 :(得分:11)

1)在.git / config中定义新分支:

[svn-remote "release-branch"]
        url = svn+ssh://xxxx@mono-cvs.ximian.com/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

答案 2 :(得分:3)

您可以通过以下方式找到SVN_BRANCHED_REVISION:

$ svn log --stop-on-copy PATH_TO_BRANCH

答案 3 :(得分:3)

此问题(https://stackoverflow.com/a/840411https://stackoverflow.com/a/7592152)的答案不再适用于Git v1.8.3.2(https://stackoverflow.com/a/19833311)。你可以这样做:

1)在.git / config中定义新分支:

[svn-remote "release-branch"]
   url = svn+ssh://xxxx@mono-cvs.ximian.com/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

答案 4 :(得分:2)

这实际上就是git svn init所做的事情 - 其他git svn命令只是简单地将事物合并在一起等等。你可以git svn init和/或复制用git svn clone克隆的SVN repo的布局,你应该只是能够拉入本地分支,或获取,等等。有一些时间使用git svn的手册页,你不应该在拼凑东西时遇到太多麻烦;如果你这样做,freenode上的#git是一个很好的资源。所以,这应该没有太多麻烦,但我不确切知道如何做到这一切。