公司決定轉向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
大功告成。