Mercurial 版本管理系統

Mercurial

簡介

安裝

使用

log 紀錄

指令

網路服務

訊息

相關網站

參考文獻

最新修改

簡體版

English

版權聲明:本文內容與圖片部分來自 http://mercurial.selenic.com/quickstart/,該網頁為 GPLv2 授權,因此修改使用時請遵守 GPL 第二版的授權協議。

版本管理系統

以下是軟體專案管理常用的版本管理工具,其中 CVS (Concurrent Version System) 是較早期使用的版本管理工具,但也常產生一些管理上的問題,因此後來多被 SVN (Sub Version)。這兩個版本管理工具採用集中式的作法,因此比較適合集中式統一版本的「大教堂式專案開發模式」,但是對於像是 Linux 這樣採用較彈性的分散式開發模式而言,就不太適用了。有鑑於此,Linux 的作者 Linus Torvalds 自己開發了 git 這個版本管理軟體,採用分散式的模式。而幾乎與 Torvalds 同時,Matt Mackal 也發現了這個問題,因此利用 Python 撰寫了另一個分散式版本管理軟體 Mercurial,這個軟體被用在 Google Code 的網站伺服器上,與 SVN 成為 Google Code 的兩個選擇之一。

  1. CVS:(集中式) 早期常被使用的版本管理系統。
  2. SVN:(集中式) 早期常被使用的版本管理系統。
  3. GIT:(分散式) 早期常被使用的版本管理系統。
  4. Mercurial:(分散式) 早期常被使用的版本管理系統。

筆者先前工作時曾經使用過 CVS 版本管理系統,但是一直覺得這個模式不夠好用。後來在金門大學由於習慣單人工作,也不太有使用版本管理系統的必要。最近決定從 Google Code Project 的學習開始使用版本管理系統的,因此採用 Mercurial 作為版本管理系統,開始重新學習版本管理的方法。

Mercurial 版本管理的概念

假如我創建了一個專案,其版本從 C1 開始,已經修改並 commit 儲存了兩個版本,因此有 C1, C2, C3 等三個版本,如下圖所示。(其中的 C3 稱為這個版本的頭部 head)

quickstart-c1.png

假如在 C1 時您利用 hg clone 將 C1 拉出,然後也修改並 commit 儲存了兩個版本,因此您也有 C1, C2', C3' 等兩個版本,情況如下所示。(其中的 C3' 稱為這個版本的頭部)

quickstart-c2.png

接著,假如我們用 pull 或 push 指令時,試圖進行合併時,Mercurial 會看到兩個不同的版本線,其狀況如下所示。

quickstart-pull.png

最後,當您使用 merge 指令,企圖將兩者合併時,Mercurial 會形成一個合併後的版本 M,如下圖所示。

quickstart-merge.png

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License