[git]subversion转git以及git仓库合并

公司决定转向github,所以今天遇到的问题是要把两个subversion仓库合并到一个github仓库中。

subversion转git这个问题很容易,github推荐使用svn2git这个脚本。 官方网站上写出了详细的安装方法,如下:

$ sudo apt-get install git-core git-svn ruby rubygems
$ sudo gem install svn2git

然后建立两个子目录,存放转换后的两个subversion仓库:

$ mkdir tmp && cd tmp 
$ mkdir projectA projectB

开始转换:

[charlee@ubuntu:~/tmp]$ cd projectA
[charlee@ubuntu:~/tmp/projectA]$ svn2git http://svn.example.com/projectA        # 由于是标准目录结构,这里不需要指定trunk分支
[charlee@ubuntu:~/tmp/projectA]$ cd ../projectB
[charlee@ubuntu:~/tmp/projectB]$ svn2git http://svn.example.com/projectB
[charlee@ubuntu:~/tmp]$ cd ..

这样就得到了projectA和projectB两个git仓库。接下来用stackoverflow上提到git-stitch-repo将这两个仓库合并成一个。首先安装git-stitch-repo:

$ tar xzvf Git-FastExport-0.07.tar.gz
$ make
$ sudo make install

[charlee@ubuntu:~/tmp]$ git clone https://github.com/charlee/project.git
[charlee@ubuntu:~/tmp]$ cd project
[charlee@ubuntu:~/tmp/project]$ git-stitch-repo ../projectA:projectA ../proejctB:projectB | git fast-import
[charlee@ubuntu:~/tmp/project]$ git checkout master-A
[charlee@ubuntu:~/tmp/project]$ git checkout master-B
[charlee@ubuntu:~/tmp/project]$ git checkout master
[charlee@ubuntu:~/tmp/project]$ git branch -d master-A master-B

然后扔到github上:

$ git push -u origin master

大功告成。

2 responses to “[git]subversion转git以及git仓库合并

  1. James

    感谢您分享这个建。我真的很喜欢您的网站。虽然我的普通话很差。 – 詹姆斯

  2. 学习了,正好用得上

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

分类目录

文章归档