使用 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
注意: 上一个命令在大型存储库上可能需要几个小时(数万次提交和/或数百兆的历史记录)。