迁移SVN仓库及历史记录到Git

时间:2022-10-29 17:47:30

迁移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仓库