获取svn所有user
填写svn仓库根目录地址,最后输出svn用户与git用户映射关系
svn log https://xxxx/svn/xxxs -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2"@xxx.com>"}' | sort -u > ./svn2git.txt
clone代码
git svn clone https://xxx/svn/xxx/ --stdlayout --no-metadata --authors-file=./svn2git.txt <dist_xxx_temp>
--stdlayout
是使用svn标准目录结构,即trunk、tags、branches这种结构
--no-metadata
是去除svn元数据信息
<dist_xxx_temp>
处填入本地存储路径
clone过程中可能会出现用户不存在的报错,这种情况下请检查svn2git.txt中是否包含该用户,且格式是否正确。添加完毕后,执行命令git svn fetch
继续即可。
调整分支
根据实际情况,将.git/refs/remotes/origin/tags
下内容挪到.git/refs/tags/
,将.git/refs/remotes
挪到.git/refs/heads/
执行命令
git branch -r #远程svn分支
git branch -l #本地git分支
git tag -l #本地git tag
检查结果是否正确,不正确的话再调整分支也可。
push到gitlab
重设远程仓库
git remote rm origin
git remote add origin http://xxxx/xxx.git
push到仓库
注意:push迁请先解决空文件夹的问题
git push -u origin --all
git push -u origin --tags
解决空文件夹无法提交到git问题
find . -type d -empty -and -not -regex ./\.git.∗ -exec touch {}/.gitkeep \;
参考:
网友评论