-
在代碼托管系統(tǒng)上創(chuàng)建空白倉庫(不進(jìn)行初始化)
git@my-git-server:myrepository.git
-
在 workspace 導(dǎo)出 SVN 提交記錄的用戶列表
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' >users.txt
編輯 users.txt,映射 Git 用戶數(shù)據(jù),格式為
username = username <email>
-
從 SVN 服務(wù)器克隆倉庫
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 標(biāo)簽(被 git svn 識別為遠(yuǎn)程分支)轉(zhuǎn)換為 Git 標(biāo)簽
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
-
將剩余遠(yuǎn)程分支轉(zhuǎn)換為本地分支
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
-
添加遠(yuǎn)程倉庫,推送所有分支與標(biāo)簽
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