Site Loader

近日重新安裝主機系統,心血來潮想說順便把用了很久的VCS(Version Control System,版本控制系統)從SVN換掉。
原本打算要試試看當紅的 git ,但研究了一陣子之後,決定採用看起來比較簡單易懂的 Mercurial 。
Mercurial 與 git 一樣都是分散式的 VCS ,兩者的比較可以參考這個連結(雖然有點過時了)。
總之,以下是我在 Ubuntu 12.04 上從 svn 移轉到 Mercurial 的歷程記錄:
1. 安裝 Mercurial 。很簡單,只要 apt-get 就可以了,這裡的 meld 是一個 diff/merge 程式,也可以不要裝。

$ sudo apt-get install mercurial meld


2. 安裝好了以後執行以下的命令,可以看到 Mercurial 的版本資訊。
(為什麼是 hg 呢? 因為 Mercurial[水銀] 的化學元素符號是 hg,相當有趣 XD)

$ hg version
mercurial 分散式版本控制系統 (版本 2.0.2)
(see http://mercurial.selenic.com for more information)
Copyright (C) 2005-2011 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3. Mercurial 的公用設定檔案位於 /etc/mercurial/hgrc,
也可以修改 ~/.hgrc 為不同使用者打造不同的執行環境。以下是基本的設定:

# Mercurial configuration file
# See hgrc(5) for more information
# User Interface settings
[ui]
username=Name <your.email@yourdomain.com>
editor=vi
merge=meld
# Enabled extensions
[extensions]
hgext.convert=

4. 接下來要把原本的 svn repository 轉換成 mercurial 的 repository。
因為我們已經在.hgrc中開啟了 convert 這個外掛,所以轉換的方式其實很簡單:

$ hg SOURCE DEST

例如

$ hg svn/repo hg/repo

接著 mercurial 就會自動幫你轉換完成囉!詳細的選項可以看官網的Wiki介紹
5. 基本上到這邊就完成了,但是因為我通常是在 Windows 上編輯,
所以還要使用 TortoiseHg 取代原本的 TortoiseSVN。
使用 ssh 的方式與主機連線執行 push / pull 的動作,
若是有 private key,則需要在 mercurial.ini 增加以下設定:
(ini的位置預設存放於 C:\Documents and Settings\UserName\mercurial.ini)

[ui]
ssh = tortoiseplink.exe -ssh -i "C:\key.ppk" -l username

之後就可以開始使用 TortoiseHg 囉!
Mercurial 其實還有很多 publish repository 的方式,可以自行選擇適合的方案。
要注意的是,與 svn 不同,分散式的 VCS 在每個 local 端都有完整的 repository,
所以若是最後要將修訂的版本存放到主機上,還必須要使用 push 這個指令才可以喔!
單純 commit 的話就只會 commit 到 local 端的 repository囉。
* 這次轉換的時候遇到中文編碼造成的錯誤,無法將程式 pull 到 windows 系統上。
在 TortoiseHg 的設定->擴充套件->勾選win32mbcs可以解決大部分中文編碼的問題,但我的狀況是仍然無解。最後是從 Ubuntu 上把原有的中文檔案刪除並 commit ,再從 Windows 端把這些檔案 push 一次,在兩地就都可以順利運行。
但缺點就是 repository 會多存放一份一模一樣的檔案。
參考資料:
Mercurial Official Website
Mercurial: Thre Definitive Guide
Setup Mercurial on Ubuntu
Tortoisehg
How to let Tortoisehg use private key?

如果您覺得這篇文章有幫助,歡迎點幾下下方的 Like 鍵支持,謝謝!
If you find this article useful, please help by pressing the Like Button below, thank you!

Post Author: starshine

Leave a Reply

Your email address will not be published. Required fields are marked *