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