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

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

版权声明:著作权归作者所有。

相关推荐

Git同步主仓库的代码到fork仓库

首先需要添加主仓库为本地的远程仓库。配置远程仓库1、在本地项目的目录下,查看已配置的远程仓库$git remote -v origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin  https://github.com/YOUR_USERNAME/

添加已有项目到远程服务器的Git仓库

按一下步骤添加已有项目到远程服务器的git仓库:1、在项目的根目录下初始化为git本地仓库git init 2、添加项目的所有文件到本地仓库,在项目的根目录执行:git add . 3、提交已添加的文件到本地仓库:git commit -m 'First commit' -m:用于添加提交日志4、添加远程git仓库获取项目在远程

Git添加空目录到仓库

Git是不允许添加空目录到仓库的。一般做法是在空目录里添加一个文件。通常会添加的文件如下:1、添加.gitignore,内容如下:# Ignore everything in this directory * # Except this file !.gitignore 这目的不让git忽略此文件2、添加.gitkee

JavaScript Array map()函数的用法及误用

Array的map()函数作用是一个数组映射为另一个数组,映射方式是以原数组的元素作为输入,使用提供的回调函数对输入元素处理,处理后返回的结果作为新数组的元素。基本语法var new_array = arr.map(function callback(currentValue, index, array) {  &nb