[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
大功告成。