SVN代码迁移至Gitlab
1.导出SVN提交用户(需要在SVN代码目录执行,并且要在GIT BASH 窗口运行)
svn log --xml | grep "^<author" | sort -u | awk -F '<author>' '{print $2}' | awk -F '</author>' '{print $1}' > userinfo.txt
导出后格式如下:
aaa
bbb
ccc
需要格式化为下面格式(下面命令中指定的 userinfo.txt 就是处理后的SVN账号):
aaa = aaa <aaa @aaa.com> bbb = bbb <bbb @bbb .com> ccc = ccc <bbb @bbb .com>
2.拉取SVN代码及日志
主干、分支、标签不是标准名称需要自己指定:
git svn clone SVN路径 --no-metadata --trunk=主干 --tags=tags --branches=branches --authors-file=./userinfo.txt 文件夹(存放拉取代码)
是标准名称(--trunk=trunk --tags=tags --branches=branches),使用 --stdlayout 即可,或 -s:
git svn clone SVN路径 --authors-file=./userinfo.txt --no-metadata --stdlayout --no-minimize-url 文件夹(存放拉取代码)
我用上面两种方式都不行,拉下来的只有 .git 文件夹,没有代码,最后用的下面命令可以了:
git svn clone SVN路径 --authors-file=./userinfo.txt --no-metadata --no-minimize-url 文件夹(存放拉取代码)
'--no-minimize-url '参数,意思是不缩小输入地址。
3.目录修改(我当时没有做这个操作也可以,建议做下面操作)
# SVN标签转为GIT标签(如果没有标签可以忽略此步)
cp -Rf .git/refs/remotes/tags/* .git/refs/tags/ rm -Rf .git/refs/remotes/tags
# 修改索引为本地分支
cp -Rf .git/refs/remotes/* .git/refs/heads/ rm -Rf .git/refs/remotes
4.推送代码至GIT服务器(具体参照GITLAB服务器命令操作即可,省略 git init 步骤)
4.1 先在GIT服务器把仓库建好;
4.2 git init 这部可以省略,因为 .git目录已经存在
4.3 git remote add origin GIT仓库地址
4.4 git add .
4.5 git push -u origin master
遇到问题
1.报错:
15:13 Commit failed with error 0 files committed, 1 file failed to commit: test commit 0820 On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean
不能正常提交代码,解决:
运行git config core.ignorecase false,关闭git忽略大小写配置
2.项目提示 pending
解决:https://blog.csdn.net/weixin_44723434/article/details/88425094
去掉下图配置