Beyond the Void
BYVoid
分佈式版本控制系統——Mercurial
本文正體字版由OpenCC轉換

最近驚喜的發現,Google Code的項目設置的“Version control system:”中多了一個名叫的“Mercurial”的選項,而不再僅僅是唯一的的一個選項:Subversion。心血來潮,於是決定試用一下。

Mercurial和Subversion簡直是不能相提並論的,因爲Mercurial是“分佈式版本控制工具(DVCS)”,而Subversion是“集中式版本控制工具”。什麼意思呢?用過Subversion的都知道,使用Subversion必須有一箇中央服務器來存儲代碼,每個開發人員都要有一個客戶端,從服務器上取得代碼拷貝,本地修改後再提交到中央服務器。而Mercurial則不需要這麼一箇中央服務器的存在(也可以有),也就是說,每個開發者都在本地代碼倉庫中存取、修改,沒有任何一個代碼倉庫更有權威性。這有什麼好處?我覺得最大的一點是,使用分佈式版本控制工具可以自由地修改代碼,而不必擔心會影響到別人,因爲無論怎麼改代碼都是存儲在本地的。同樣原因的另一各好處就是可以自由地在不聯網時控制版本庫,而開發者之間的寫作只需要在聯網時進行即可。當然我只能簡單說說了,更多的不同推薦閱讀一下這篇爲什麼我們要放棄Subversion。當然Mercurial並不是唯一的一種分佈式版本控制工具,還有強大的git。ibus和ibus-pinyin的開發,就是用的git作爲版本控制工具。有過git使用經驗的我感覺的Mercurial並不是很難,如果沒有經驗的話就不好說了,因爲有很多概念和傳統的SVN不同,需要一段時間適應。推薦一篇入門文章:分佈式的,新一代版本控制系統Mercurial的介紹及簡要入門。Mercurial命令行工具名字是hg,都是“汞”的意思。

很高興能夠看到Google Code開始支持分佈式版本控制工具了,但至於Google爲什麼選擇了Mercurial而不是Git,有一篇文章介紹Git 與 Mercurial 的分析。說了這麼多,到底怎麼在Google Code上用Mercurial呢?我的項目已經有SVN作爲管理工具了,首先要解決的問題是把SVN上面原有的代碼移植到Mercurial上,當然簡單的方法是把最新的版本直接提交到Mercurial版本庫,但我想要留下SVN上所有的版本提交記錄,這裏有一篇文章講得很好 在Google Code上用 Mercurial 取代 Subversion 管理你的項目”

作爲分佈式版本控制工具,自然會有很多分支,而分支之間錯綜複雜的關係如果沒有一個圖形化的工具是很難閱覽的。著名的git開源託管網站github.com提供了在線的分支網絡閱覽功能,因此可以一目瞭然(如下圖),但Google Code就沒有這麼好的功能了,因此還依賴一個本地的圖形化工具。

找來找去,找到了小烏龜TortoiseHg。TortoiseHg本身是一個面向Windows平臺的工具,和TortoiseSVN,TortoiseGit一樣。高興地發現它是GTK+寫的,因此也提供了Linux版本。我在Ubuntu下使用apt-get install tortoisehg就安裝了,按照網上提供的方法,再安裝一個python-nautilus,然後將集成tortoisehg到nautilus

mkdir -p ~/.nautilus/tortoisehg/src/ 
cd ~/.nautilus/tortoisehg/src/
hg clone https://bitbucket.org/tortoisehg/stable tortoisehg
mkdir -p ~/.nautilus/python-extensions/
ln -s ~/.nautilus/tortoisehg/src/tortoisehg/contrib/nautilus-thg.py ~/.nautilus/python-extensions/

之後重新登錄,或者使用nautilus -q重啓nautilus引擎即可。但是我按照此方法安裝後卻發現不能正常使用,而且沒有任何錯誤提示。於是又Google半天,終於找到了解決方法。在終端中使用tail -f ~/.xsession-errors,再次在文件瀏覽器中點擊菜單中TortoiseHg的功能,這時終端中顯示出瞭如下信息: abort: This version of TortoiseHg requires Mercurial version 1.5.n to 1.6.n, but finds 1.4.3

原來是Ubuntu官方源中Mercurial版本太低了,因此我使用了ppa的源:

sudo add-apt-repository ppa:tortoisehg-ppa/releases
sudo add-apt-repository ppa:mercurial-ppa/releases
sudo apt-get update
sudo apt-get install mercurial python-nautilus tortoisehg

再次打開,已經安裝成功。


上次修改時間 2017-05-17

相關日誌