将SVN存储库的一部分导入现有的Git存储库

And*_*Mao 9 svn git version-control git-svn svn2git

我有一个现有的SVN仓库,我想将其中的一部分导入到现有的Git仓库中.任何人都可以给我一个高级概述这样做的命令吗?

摘要:

  • 我想移动现有SVN存储库中的一些子目录(但不是其余的repo)
  • 我有一个现有的Git仓库,我想将这些目录导入
  • 我想保留我移动的子目录的历史(但不是其他任何东西)

我有一种感觉,这涉及到git filter-branch一些奇怪的合并.任何帮助,将不胜感激.

And*_*Mao 9

事实证明这很复杂,但这就是我所做的.

  1. 首先准备SVN存储库.之后我打算从SVN中删除文件,因此它有助于将所有文件放在一个目录中(filter-branch以后也会更容易).

  2. 使用git:检查了SVN repo git svn clone http://path/to/svnrepo.这会创建一个svn repo的git版本.

  3. 使用这篇SO帖子中的想法,Detach(move)子目录到单独的Git存储库,我用它filter-branch --subdirectory-filter来过滤我想要的目录,并从SVN中删除其他东西的历史记录,我不想保留在git中.您还可以使用git subtree一个新功能,如在Howto中提取git子目录并从中创建一个子模块?

  4. 然后,使用此SO帖子中的想法,如何合并两个Git存储库?,我将新的git repo导入到我想要添加到的父项目中.接受的答案不正确,请查看该页面上的其他答案; 你想做一个git remote add git-proj <path>跟着一个git pull.

  5. 最后,将更改推送到git项目.