svn迁移gitlab并保留空文件夹与提交记录

获取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 

--stdlayout是使用svn标准目录结构,即trunk、tags、branches这种结构
--no-metadata是去除svn元数据信息
处填入本地存储路径
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 \;

参考:

  1. Git 与其他系统 - 迁移到 Git
  2. 将代码库从 SVN 迁移至 Git 并保留所有 commit 记录
  3. SVN切换到Git方法及坑点
  4. SVN迁移Gitlab步骤
  5. gitlab上传空文件夹

你可能感兴趣的:(svn迁移gitlab并保留空文件夹与提交记录)