我目前有一个谷歌代码项目,我想将其合并到Github上的一个项目中。
问题是SVN项目基本上只是github上较大项目的文件夹,所以我认为我不能只使用git-svn。
我假设我可以使用git svn克隆项目,但后来我不确定如何将svn项目正确地移植到现有的git项目中。
期望的结果是将SVN历史记录转换为Git分支(不将其移植到master上)。
能够拒绝回到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
读取合并历史记录并将其重新绑定到所需的子文件夹
希望这可以帮助处于类似情况的人;)
答案 0 :(得分:2)
我之前没有使用它,但听起来你想要the subtree merge strategy。 This article有关于如何使用它的更多细节。
基本上,您将SVN存储库添加为远程,然后使用git read-tree
命令将其“移植”为纯git存储库的子目录。根据您希望历史记录显示的方式,您可以git merge -s subtree
将其合并到pure-git分支(保留git-svn提交),也可以按照第二个链接中的步骤添加{ {1}}和--squash
标志并将合并显示为pure-git分支中的单个提交。
说明假设遥控器也是一个git repo。如果使用git而不是git-svn创建本地存储库,则不确定它将如何发挥作用。它是一种kludge,但here are some scripts用于创建一个仅在git中镜像SVN repo的中间存储库。这样,您可以制作svn repo的git-svn镜像,并将其添加为遥控器,上面的说明应该如上所述。