2011年11月11日 星期五

如何在 GIT 跟 CVS 之間協同合作

主要可以參考這個網站 http://dabase.com/e/09017/

最近由於計畫需要跟別人做整合,但是計畫又是由別人主導的,
但是別人在版本控制系統用的是 CVS,自己本身已經使用 Git 習慣了,
只好開始找怎麼讓 Git 可以轉換成 CVS 的方法

在這邊就不贅述怎麼在 CVS 跟 GIT check out了

要在兩邊做同步,目前我嘗試出來的方法需要兩個目錄,
一個是專門給自己的Git用,一個專門用來給CVS commit用,

在這邊就用 proj.git 跟 proj.cvs 代稱兩個方法的目錄
首先用 git cvsimport 指令將 CVS import進來 proj.git 目錄內
指令大概是 git cvsimport -d :pserver:user@cvs_server:/cvs_root proj
在這之前可以先將cvs login,避免要一直輸入密碼

之後準備 CVS 用的目錄,這邊就照cvs自己的方法把目錄update或是checkout下來
指令大概是 cvs -d :pserver:user@cvs_server:/cvs_root checkout proj

之後就可以開始用git 把東西加進去了,commit之後我們要用
git cherry origin master 這個指令拿出等等要用來跟CVS commit用的一串編碼
理論上應該直接用最後一個就可以了,這邊我現在還沒做太多測試

再來要跟CVS commit之前,要先設定GIT_DIR變數到我們要跟哪個git資料夾同步的.git目錄
以這邊我們就要設定 export GIT_DIR="/home/user/proj.git/.git"
之後切換過去 proj.cvs目錄執行 git cvsexportcommit -v -c -w /home/user/proj.cvs/ ffceaad60e690600b2f56fd43755fe7e77da38ed
最後面那串就是剛剛我們用git cherry origin master拿出來的編碼
成功之後就被sync到CVS上面去囉