使用 svn2git 从 SVN 迁移到 Git

svn2git 是一个 Ruby 包装器,它通过 git-svn 围绕 git 的本机 SVN 支持,帮助你将项目从 Subversion 迁移到 Git,保留历史记录(包括 trunk,tags 和 branches 历史记录)。

例子

要使用标准布局(即存储库根级别的分支,标记和主干)迁移 svn 存储库,请执行以下操作:

$ svn2git http://svn.example.com/path/to/repo

要迁移不在标准布局中的 svn 存储库:

$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir

如果你不想迁移(或没有)分支,标签或主干,你可以使用 --notrunk--nobranches--notags 选项。

例如,$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches 将仅迁移主干历史记录。

要减少新存储库所需的空间,你可能希望排除曾经添加的任何目录或文件(例如,构建目录或存档):

$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'

迁移后优化

如果你在新创建的 git 存储库中已经有几千个提交(或更多),则可能需要减少在远程推送存储库之前使用的空间。这可以使用以下命令完成:

$ git gc --aggressive

注意: 上一个命令在大型存储库上可能需要几个小时(数万次提交和/或数百兆的历史记录)。