我知道你可以使用git svn init跟踪一个带有git的svn repo,但是如果你想创建一个全新的repo,那就是这样。
我的情况是,我目前已经有了一个现有的git repo,并希望通过在当前的git仓库中将其作为远程分支来跟踪svn repo的主干。
有什么建议吗?
答案 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/840411和https://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是一个很好的资源。所以,这应该没有太多麻烦,但我不确切知道如何做到这一切。