2012-11-15 64 views
2

目前我正在研究如何引入DVCS(尤其是我在看Hg和Git),同時保留CVS存儲庫(甚至只是通過CVS協議的訪問機制)。有些開發人員很不願意從CVS切換,但如果它們可以自動同步或者擁有CVS協議前端,並行運行應該沒問題。如何與(「集中式」)DVCS存儲庫並行運行CVS?

以前CVS存儲庫已經被手動編輯(在磁盤上),但似乎都是一致的,我可以在之前嘗試轉換,我們也可以保留CVS存儲庫的副本當我們遷移時。

考慮到Git對它的支持,我的想法是運行git-cvsserver(1)前端,但我沒有經驗,也沒有經歷過實際的轉換。假設這是一個完全理智的想法,任何人都可以請指出文章,列出這種遷移路徑的經驗。如果您必須提供任何此類建議,那麼瞭解潛在的警告也很好。

遷移應該儘可能無縫。因此,只要CVS前端在後續無縫工作,在幾次「彩排」之後的晚上進行分級就可以了。

與DVCS的工作流程最終將再次集中,但我想利用卓越的合併跟蹤和古代CVS根本沒有的其他機制。

+1

您是否考慮過首先轉向Subversion? hg和git都有附加組件,允許它們與svn進行通信,從cvs到svn的轉換比從cvs轉移到分佈式系統要小得多。 – Charles

回答

1

雖然git提供了一個CVS服務器,但這個服務器是非常有限。您不能創建標籤或分支,並且git分支顯示爲CVS模塊。你也不能將你的CVS repo轉換成git,以便文件修訂版本號相同(git cvsserver在需要的時候爲每個git分支創建一個自己的文件修訂版數據庫)。

OTOH你可以使用git作爲cvs前端。工作流程是使用git cvsimport從CVS服務器獲取歷史記錄,並使用git cvsexportcommit將某些git提交導出到本地CVS簽出。在Tsuna's blog有一篇關於這方面的更多細節。

解決此問題的另一種方法是分析您的同事不想切換的原因。在這裏,他們根本不知道/關心VCS的新方法,以及在哪裏成爲我們一直這樣做的習慣。在一個試點項目中使用mercurial是讓其他團隊成員相信的關鍵。

+0

感謝您的回答。我正在閱讀博客文章。不願意的問題是,有問題的人(實際上是一個人)認爲使用古代工具是一種美德,因此會從中獲得「吹牛的權利」。從Visual SourceSafe開始轉向CVS早於我的時間,但據同事認爲這是一大麻煩。然而,正如他在處理一系列文件時一般抱怨其他人承諾的那樣,Hg或Git中的合併支持應該是足夠的。雖然可能需要一段時間才能沉入水中。 – 0xC0000022L

+0

我擔心這是你目前的狀況,甚至比我們的情況更糟。您的CVS工作流程有多複雜(=您使用分支機構,標籤和合並)?當你不使用標籤和分支時,你可以設置一箇中央的git鏡像(一個服務器定期運行'git cvsimport',最好作爲CVS服務器的提交鉤子),並且在開發機器上使用'cvs exportcommit' 。所以你可能獲得足夠的動力來推動一個開發者朝着正確的方向前進。你還有多少開發者,並且有一個特殊的位置?你能從管理層獲得支持嗎? – Rudi

+0

是的,我們正在使用標籤和分支,但根據我的知識合併只會被另一個願意切換的開發人員使用。阻止人處於特殊的位置,這使得它有點死衚衕;) – 0xC0000022L