迁移svn到git,需要安装git-svn。迁移过程如下:
1、创建SVN用户文件(如authors.txt)
authors.txt格式如下:
zhangsan = 张三 <zhangsan@address.com>
lisi = 李四 <lisi@address.com>
...
可以使用以下命令把svn的用户导出:
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors.txt
如果文件里缺失svn里的用户,svn就会停止迁移。
2、迁移svn到git
命令如下:
git svn clone --stdlayout --no-metadata --authors-file=authors.txt svn://hostname/path dest-dir
- --stdlayout:这个标识表示svn使用用标准的目录层次存放数据,即trunk/, branches/, tags/。如果不是,可以使用--tags, --branches, --trunk来至指定。
- --no-metadata:默认情况下,git会在svn的提交信息里补充一些git的信息。这个标识是用来把这些信息去掉。
- --authors-file:svn用户列表
- dest-dir:新的git仓库。这个是拉取svn数据到本地的文件夹,它会在dest-dir上新建git仓库。
如果authors.txt文件里缺失svn的用户,SVN会终止拉取数据。碰到这种情况,需要在authors.txt添加上用户,然后执行拉取命令:
cd dest-dir
git svn fetch
到此即可完成svn迁移到git仓库