1. 程式人生 > >使用HG(Mercurial)做分散式程式碼管理的一些經驗

使用HG(Mercurial)做分散式程式碼管理的一些經驗

距離第一次使用HG已經由2,3年了。 從第一次將HG用於自己的專案, 用U盤同步程式碼. 到現在將HG應用於linux, 版本差異釋出, 專案內部多人的分散式開發,已經感覺非常熟練。

我們的專案的客戶端和伺服器均由C++開發,由於HG設計的理念是1個工程對應1個庫, 因此我們的客戶端和伺服器是分開的兩個HG程式碼庫。這種思想和SVN管理的程式碼有很大不同。SVN時代的遊戲工程大多是這樣安排目錄的:

common <-客戶端和伺服器共享的庫

client<-客戶端的程式碼

server<-伺服器的程式碼

通過SVN強大的許可權控制給不同的前後端賦予許可權,前後端程式將獲得不同的目錄組合。SVN下的這種工程組織方法能很好的解決單一語言跨工程的程式碼,協議共享問題。雖然現在各種Erlang,Java的伺服器語言與as3,lua的不同客戶端指令碼語言混雜的時代已經無所謂這種老式設計思想。但是對於我們純C++的手游來說,還是必須面對分散式程式碼管理工具下的程式碼跨庫共享問題。

我就這個問題與多年前被我推薦過HG的朋友討論起來,他們也存在我們這個問題,但是他們的解決方法就是每個工程一個庫。然後被我問到:“同步一次程式碼,一次次的開啟不同的庫(他們客戶端+伺服器一共6到7個HG程式碼庫),進行同步, 完成後, 還要反向pull,不累啊?”, 朋友回答:“習慣就好”

隨後,我也翻查了git對多專案的支援。得到的答案也是跟HG一樣的, 這類分散式程式碼管理工具本身的設計理念只有賬號,而無許可權, 本身就是基於開原始碼精神設計的工具, 如果分了許可權,豈不是違背開源精神(這是我想的微笑)。因此如果想管理多個專案程式碼, 要麼多庫,要麼合庫。