1、SVN准备迁移到Gitlab的工作
1.1 将svn提交记录导出,如下图操作:svn log>log.txt
导出后将生成一个提交记录的log.txt的文件,文件格式如下所示:
1.2 然后创建svn2git.txt文件,作用是svn用户名与git用户名的一个映射文件。格式如下:
示例:wei=wei
可以将上面导出的log.txt文件中的用户名都对应到svn2git.txt中去。将svn2git.txt放到D盘根目录下。
1.3 找到你要存储git的目录打开Git BASH,如下我新建个目录用来存储切换到git后的代码
1.4 打开Git BASH后,使用命令:
git svn clone "http://×××.×××.×××.×××/×××/×××/test-test-api" --authors-file="D:/svn2git.txt" --no-metadata test-test-api
标红处分别为svn地址,svn2git文件的目录, 自定义的工程名
如下图所示会报错。
Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item:'****' path not found
Do not be alarmed at the above message git-svn is just searching aggressively for old history.
1.5 可以添加版本号来解决上面的问题,如下命令:
git svn clone -r268600:HEAD "http://×××.×××.×××.×××/×××/×××/test-test-api" --authors-file="D:/svn2git.txt" --no-metadata test-test-api (这里版本号使用的是最新的记录,迁移后只有最新的一条提交记录)
其中-r版本号可以从log.txt中查看。
为了方便将svn2git.txt文件放到和Git BASH 同级目录,然后用如下命令: (这里版本号使用的是最初始的记录开始) 使用下面的命令测试后,可以将所有的svn提交记录迁移到git上。
git svn clone "http://×××.×××.×××.×××/×××/×××/test-test-api" --authors-file=svn2git.txt --no-metadata -r2800:HEAD test-test-api
执行过程中会将所有的 r28** 记录打印出来,类似如下图:
在操作上述命令时,我这边报错提示: Author: **** not defined in svn2git.txt file
其实是存在的,但不知道为什么会报这个错。所以这里解决办法是:将svn2git.txt的第一行空出来,回车一下。然后重新执行上面的命令就正常了。如下图:
1.6 等待上面的命令执行完后,代码就down下来了,如下图所示:
1.7 在上面截图的目录下,Git BASH设置一下用户信息,如下:
git config --local user.name "你的gitlab用户名"
git config --local user.email "你的gitlab邮箱"
1.8 确定进入到工程目录下,使用命令 : git remote add origin http://***.***.***.**/test/test-test-api 将本地仓库和远程仓库建立连接,其中http地址是在Gitlab上新建的项目地址。还未push代码时Gitlab如下截图所示:
1.9 将本地数据推送到远程仓库上,命令:
git push -u origin master
1.10 刷新gitlab页面,会发现代码已经推送上来。如下截图: