SVN仓库迁移到Git的完美解决办法

 

参考文章Converting a Subversion repository to Githtml

1 使用git svn clone 拷贝svn仓库

cd ~/test_repo
git svn clone file:///home/***/Desktop/SVN/svn_repo/ -T trunk -b branches -t tags

2 新建一个git的bare仓库

cd ..
mkdir test.git
cd test.git
git init --bare

3 将git的默认分支和svn的默认分支trunk对应起来

git symbolic-ref HEAD refs/heads/trunk

4 将test_repo推送到test.git中

cd ~/test_repo
git remote add bare ~/test.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare

此时就完成了推送,能够删除test_repo了git

5 将git repo中的trunk重命名为master

cd ~/test.git
git branch -m trunk master

6 将svn repo中的tags移动到git repo的相应位置

使用git svn clone导出版本库的时候会将svn中的tags保存成git中的tags/**,而并非默认的tag,因此要进行移动svn

cd ~/test.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

7 完成迁移,获得test.git

进入工做文件夹,执行gitlab

git clone ~/test.git

使用git进行版本管理吧spa

==========================================.net

(二)版本控制

svn迁移到git仓库并保留commit历史记录

最近在作svn迁移到gitlab,因为以前一直是由svn作版本控制。最简单的方式是将svn的内容export出来,而后添加到gitlab便可。可是,若是svn用的时间很长了,并且不少commit,咱们但愿保存svn commit的信息以便作版本的控制和比较。幸亏git提供了相应的解决办法。code

前提

  • 已安装git
  • 已安装gitlab

迁移

1.环境准备:

yum install -y git-svnorm

2.svn帐号与git帐号映射,users.txt

svn帐号=git帐号名称<username@mail.com>

3.svn转换为git

git svn clone svn://ip端口/projectname --no-metadata --authors-file=users.txt --trunk=trunk projectname
cd projectname

4.添加git仓库

git remote add origin git@xxx.xxx.xxx.xxx:root/projectname.git

5.提交到gitlab

git push -u origin master

参考文档:htm

相关文章
相关标签/搜索