检索所有Subversion贡献者的列表:
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt
使用git-svn克隆Subversion存储库:
git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp
将svn:ignore属性转换为.gitignore:
cd ~/temp
git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'
将存储库推送到裸的git存储库:
git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk
然后将临时仓库推送到新的裸仓库。
cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
将“trunk”分支重命名为“master”:
cd ~/new-bare.git
git branch -m trunk master
清理分支和标签:
cd ~/new-bare.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
git tag "$ref" "refs/heads/tags/$ref";
git branch -D "tags/$ref";
done
参考资料:http://john.albin.net/git/convert-subversion-to-git