git svn命令
Git 中所有 Subversion 桥接命令的基础是 git svn 。所有的命令都从它开始。相关的命令数目不少,本文不过多介绍git svn的命令使用,只简单的说明一下最常用的几个,更多的知识参考书记pro git。
整理用户名与Email的映射
在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中。如果想让已有的信息更好的映射到 Git 作者数据里,则需要 从 Subversion 用户名到 Git 作者的一个映射关系,因为Git是用邮箱来标识一个提交者的。建立一个叫做 user.txt 的文件,每行一条svn作者 = 作者昵称 <邮箱地址>,用如下格式表示映射关系:
user.txt的demo
schacon = Scott Chacon <schacon@geemail.com>
selse = Someo Nelse <selse@geemail.com>
SVN代码的所有提交者的作者名可以通过以下命令获得:
获取svn提交的作者名
svn log --xml | grep "^<author" | sort -u | \
awk -F '\<author\>' '{print $2}' | awk -F '\</author\>' '{print $1}' > user.txt
得到以下文本,然后根据以上的格式编辑作者的邮件信息等。
得到了svn的作者名
schacon
selse
这样我们的把有svn的提交记录的作者、邮箱user.txt都准备好了,接下来就克隆svn的地址。
克隆svn的trunk到本地
git svn clone http://example.com/path/to/project-x/trunk \
--authors-file=users.txt project-x
http://example.com/path/to/project-x/trunk是svn的项目地址,这里用了trunk的目录。
--authors-file=users.txt是指明svn的作者信息,git要用到。
project-x是文件夹名字
--no-metadata参数可以不要svn的信息,适合迁移的时候使用,不适合git svn共用