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

Ale*_* B. 5 svn git git-svn

我目前有一个关于谷歌代码的项目,我想将其整合到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 镜像,并将其添加为远程,上面的说明应该按描述工作。