将一个SVN仓库作为分支导入到现有的Git仓库中

5

我目前在Google Code上有一个项目,我想将其合并到Github上的一个项目中。

问题是SVN项目本质上只是Github上较大项目的一个文件夹,因此我不认为我可以仅仅使用git-svn来完成这个任务。

我假设我可以使用git svn来克隆该项目,但我不确定如何正确地将svn项目嫁接到现有的git项目中。

期望的结果是将SVN历史记录放入Git分支中(而不是嫁接到主分支)。

能否提交回svn并不是必要的(如果有帮助的话)。

已解决

我最终采用了just_doug的建议,但进行了一些小修改:

1:我使用了http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/中的建议将googlecode添加为远程引用

2:我为所需的远程分支创建了一个新的从主分支分出的分支

3:我使用以下命令合并了两个分支

git merge -s ours --no-commit googlecode-remote

4:然后我使用以下命令将合并历史记录读入并重新定位到所需的子文件夹

git read-tree --prefix=folder1/folder2/ -u googlecode-remote

希望这对类似情况下的某个人有所帮助;)

1个回答

2
我之前没有使用过它,但是听起来你想要的是子树合并策略这篇文章详细介绍了如何使用它。
基本上,你需要将SVN存储库作为远程添加,然后使用git read-tree命令将其“嫁接”为纯git存储库的子目录。根据你希望历史记录显示的方式,你可以执行git merge -s subtree将其合并到你的纯git分支中(保留git-svn提交),或者你可以按照第二个链接中的步骤添加--squash--no-commit标志,并在纯git分支中以单个提交形式显示合并。
这段话的意思是:假设远程仓库也是一个Git仓库。如果本地仓库是用Git而不是git-svn创建的,则不确定它是否能正常运行。这有点笨拙,但这里有一些脚本可以创建一个中间仓库,只是将SVN仓库在Git中进行镜像。这样,您就可以创建一个git-svn镜像,将其添加为远程仓库,上面的说明应该按照描述工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接