我目前有一个关于谷歌代码的项目,我想将其整合到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
读取合并历史记录并将其重新绑定到所需的子文件夹
希望这可以帮助处于类似情况的人;)
小智 2
我以前没有使用过它,但听起来你想要子树合并策略。本文详细介绍了如何使用它。
基本上,您将 SVN 存储库添加为远程存储库,然后使用git read-tree命令将其“移植”为纯 git 存储库的子目录。根据您希望历史记录的显示方式,您可以将git merge -s subtree其合并到 pure-git 分支(保留 git-svn 提交),也可以按照第二个链接中的步骤操作并添加--squash和--no-commit标志并进行合并在 pure-git 分支中显示为单个提交。
这些说明假设远程也是一个 git 存储库。如果本地存储库是使用 git 而不是 git-svn 创建的,则不确定效果如何。这是一种拼凑,但这里有一些用于制作中间存储库的脚本,该中间存储库仅镜像 git 中的 SVN 存储库。这样,您可以创建 svn 存储库的 git-svn 镜像,并将其添加为远程,上面的说明应该按描述工作。