如何将具有历史记录的部分SVN repo迁移到新的Git存储库?

我需要将部分SVN repo迁移到git.

例如,SVN根目录是:http://example.com/svn/project,我需要迁移项目子目录,如http://example.com/svn/project/trunk/foo/bare.

我试着用:

git svn clone http://example.com/svn/project \
    -Ttrunk/foo/bare --no-metadata -A ~/authors-transform.txt ~/temp

在这个命令之后我得到一个带有两个分支的git repo:trunk和trunk @ 61,但是我只需要一个分支.

迁移后只需要一个分支我需要做什么?

最佳答案 当然,删除不需要的分支.但是你会在修订版61之前放弃历史.

trunk @ 61存在,因为您要导入的目录已被替换.在某种程度上,git svn并不认为是历史的延续.因此,它记录了该修订版的ref值,并重新开始.

由于它是一次性转换,您可以使用graft来连接历史记录,filter-branch来重写它,因此不需要移植文件(参见filter-branch文档)而不是删除现在无用的分支.

点赞