七、svn带历史信息迁移到Gitlib
因网络上文章参差不齐,参考操作步骤后,总是会出现各种问题,为了避免大家再走弯路,特整理此文章,为大家节约更多时间从事其他内容。如有冒犯,请谅解。1、SVN账号对应Gitlib账号SVN使用的是用户账号展示的提交记录,但是git使用的是账号和邮箱进行人员确认的,因此我们需要使用将二者进行对应。在操作目录下创建txt文本文档,我这儿使用是svn2git.txt,文本内容如下:zhaoqian=zhao
因网络上文章参差不齐,参考操作步骤后,总是会出现各种问题,为了避免大家再走弯路,特整理此文章,为大家节约更多时间从事其他内容。如有冒犯,请谅解。
1、SVN账号对应Gitlib账号
SVN使用的是用户账号展示的提交记录,但是git使用的是账号和邮箱进行人员确认的,因此我们需要使用将二者进行对应。在操作目录下创建txt文本文档,我这儿使用是svn2git.txt,文本内容如下:zhaoqian=zhaoqian <zhaoqian@gmail.com>,等号左边是SVN账号,等号右边是Gitlab账号和邮箱信息(注意:只有是操作过SVN的人员都需要转换,否则导入报错)。
有快捷方式,SVN账号可以用命令导出来的。
在工作目录下打开你的Git BASH 如下图:
(你的windows先安装了Git以后才有的,前面文章有提起如何安装)进入你要保存账号对应文件svn2git.txt的目录(我是在d盘根目录使用:cd /d/qianyi),
执行如下命令:
svn log http://192.168.0.110/svn/android/huaxiapos/ -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@gmail.com>"}' | sort -u > ./svn2git.txt
命令说明:svn log 你的SVN项目的url -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@gmail.com>"}' | sort -u > ./svn2git.txt,这是使用的Linux的awk命令导出的svn账号信息格式化的,当然我这里用的gmail邮箱,你可以自定义邮箱,打开看下是不是和上面的文本内容格式是一致的。
2、git-svn拉取SVN项目
git svn clone "http://192.168.0.110/svn/android/huaxiapos" --no-metadata --authors-file="d:/gitqianyi/svn2git.txt" huaxiapos
命令说明如下:git svn clone "你的SVN项目的url" --no-metadata --authors-file="d:/svn2git.txt" 你自定义的项目名,这是使用你的账号对应转换SVN的提交记录为git提交记录。这时huaxiapos目录下会把SVN服务器上的项目下载在本机目录下,并转换为git仓库项目。
执行成功后会按下面截图展示:
3、提交项目到gitlab
切换到刚才使用Git-svn拉取的huaxiapos项目目录下,
执行:git config --local user.name "你的gitlab用户名",git config --local user.email "你的gitlab邮箱",这两个是配置项目用户信息,例如:
git config --local user.name "zhaoqian"
git config --local user.email "zhaoqian@gmail.com"
执行:git remote add origin 你的gitlab项目的git地址(注意使用http开头的,不雅用git开头的), git push -u origin master,这两个命令是添加远程操作url和推送远程。
git remote add origin http://xxxx/android/huaxiapos.git 或
git remote add origin git@IP:/android/huaxiapos.git(ssh传输方式快,且不受文件大小限制,提交此命令无需在远程提前创建 huaxiapos仓库,命令会自己创建。)
git push -u origin master
显示以下进度页面:
此时可以在Gitlib上看到上传的项目。
如果报错参考看下面问题回复:
在执行git-svn拉取SVN项目会报下面截图内容,此时是因为没有SSL证书,为了避免这个问题,
打开远程服务器将红色框中的对勾去掉,默认为80端口,此时不在需要证书,也不会报错,第2步的命令就可以正常执行了。
如果报:error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
fatal: The remote end hung up unexpectedly 请改用ssh地址模式进行上传项目
git remote add origin git@ip:android/huaxiapos.git
更多推荐
所有评论(0)