Pages

Saturday, September 8, 2007

加入水銀黨

前陣子一直覺得 cvs 和 svn 並不是真的那麼好用,因此在看了許多人的介紹後,我也決定加入水銀黨了 (誤...

之前在 OSDC.tw 聽過 svk 的介紹後其實就有點心動,想把手上的程式碼轉過去試試,不過安裝起來沒那麼方便,就一直拖著 (是不難啦,但就是懶....)。後來因為要裝 X.org,所以在系統裝了 git,但也就用過那麼一次,看到一大堆指令就放棄了,沒有實際拿來管理檔案。一直到知道 mercurial 的存在,才下定決心要來瞭解一下 DVCS 到底是怎麼回事...

首先是 clone、pull 和 push 的概念,用於 repo 之間的操作。在沒有實際使用 DVCS 前一直不能理解這兩個指令的用途。除了 repo 可以無限複製外,同一個 repo 甚至可以有多個 HEAD。除此之外 tag 和 branch 的概念也不太一樣了,使用觀念上雖然需要不少修正,但在操作上卻沒有增加太多複雜度,反而讓寫程式的人可以更放心修改,更隨意修改

之前使用 cvs 最麻煩的一點是少了網路就什麼都不能做;svn 雖然有一點改善,但也只是比 cvs 好一點而已。除了對網路的依賴性大減外,易用性才是我最欣賞的。以前在在 cvs server 建立新的 module,得先 import,然後再 checkout 出來,同一份專案得經過兩次網路傳輸才能開始使用。但 hg 可以直接把要控管的目錄變成 repo,直接就能開始控管,因為都是在本地端的操作,所以速度相當快

另外在一些文章中有看到 hg 會保留檔案權限 (permission),應該把 etc 丟進去試試看,以後管理系統會更方便,不用複製一大堆備份的設定檔了

唯一比較有礙於推廣的理由大概就是 GUI frontend 的支援了。雖然有一個 hgk 可以用,但也只能看看目前 repo 長什麼樣子 (雖然如此,幫助也很大了)。目前似乎還沒有出現像 wincvs 或 tortoise 這類高度整合的工具,只聽過好像有 eclipse 的 plugin (但我自己習慣在命命令列工作,因此影響不大)。

有些人可能會在意 benchmark 數據,目前看來最大的威脅就是 git 了,各項操作似乎都比 hg 快上一點 (也許要再夠大的專案才會拉開差距),不過因為 python 和 的關係,我目前還是不會考慮 git

有興趣玩玩看的話,可以先參考官方的 wiki線上電子書


This article was originally posted on this site.

1 comment:

  1. http://weblogs.mozillazine.org/preed/2007/04/version_control_system_shootou_1.html
    連Mozilla都選擇了mercurial _A_

    ReplyDelete