-
在代码托管系统上创建空白仓库(不进行初始化)
git@my-git-server:myrepository.git
-
在 workspace 导出 SVN 提交记录的用户列表
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' >users.txt
编辑 users.txt,映射 Git 用户数据,格式为
username = username <email>
-
从 SVN 服务器克隆仓库
git svn clone --authors-file=users.txt --no-metadata --stdlayout --prefix="" http://my-project.googlecode.com/svn/ my_project
-
删除 peg-revision 分支(非必须)
for p in $( git for-each-ref --format='%(refname:short)' | grep "@" ); do
git branch -D -r $p
done
-
将 SVN 标签(被 git svn 识别为远程分支)转换为 Git 标签
for t in $( git for-each-ref --format='%(refname:short)' refs/remotes/tags ); do
git tag ${t/tags\//} $t
git branch -D -r $t
done
-
将剩余远程分支转换为本地分支
for b in $( git for-each-ref --format='%(refname:short)' refs/remotes ); do
git branch $b refs/remotes/$b
git branch -D -r $b
done
-
删除 trunk 分支(非必须)
git branch -d trunk
-
添加远程仓库,推送所有分支与标签
git remote add origin git@my-git-server:myrepository.git
git push origin --all
git push origin --tags
参考:
https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git