一、安装工具
在 Centos
系统中安装 git-svn
工具
yum install git-svn -y
在 Windows
系统上操作则安装 git-base
二、生成svn转git的账号对应关系
文件中的格式为: svn用户名 = git用户名 <git邮箱>
例如:
root=root <admin@example.com>
zhangsan=zhangsan <zhangsan@qq.com>
对应关系主要用于将SVN迁移至Git仓库之后,日志中的提交者可以在Git仓库中正常显示,开发者能够看到代码的提交用户。
以上文件生成也可以使用命令生成
svn log 要迁移的SVN仓库地址 -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt
执行后只需要对生成的users.txt
文件格式做调整即可。
三、导出记录
git svn clone 要迁移的SVN仓库地址 --trunk=主分支名称 --tags=tags --branches=branches --authors-file=./users.txt --no-metadata
上面的命令中:
--trunk
是指定svn仓库中的主分支,如果不指定,将会在导出的时候报类似错update-ref HEAD refs/remotes/origin/trunk: command returned error: 128
的错误--tags
、--branches
指需要迁移的标签和分支,如果不需要迁移,则不指定
下面的操作需要进入导出的项目目录操作
四、清理工作
此步骤针对需要有迁移的标签
和 分支
- 把标签变成合适的Git 标签(有则执行)
cp -rf .git/refs/remotes/tags/* .git/refs/tags/ rm -rf .git/refs/remotes/tags
- 把refs/remotes 下面剩下的索引变成本地分支
cp -rf .git/refs/remotes/* .git/refs/heads/ rm -rf .git/refs/remotes
五、添加Git远地址
git remote add origin 目的Git仓库地址
六、推送
git push origin --all
到此,迁移工作已完成
文章来源:
鸿辰
版权声明:本网站可能会转载或引用其他来源的文章、图片、数据等信息。对于这些转载内容,版权归原作者所有。本站尊重原作者的劳动成果,并在可能的情况下注明来源和作者。如有任何版权问题,请及时联系,收到后将第一时间处理。