1. 程式人生 > >Mercurial(Hg)基本操作

Mercurial(Hg)基本操作

列表 成了 窗口 分布式版本控制 apache doc 項目 如果 其他

Mercurial(Hg)基本操作

來源 https://www.cnblogs.com/gb2013/archive/2012/05/18/Mercurial_Basic.html

Mercurial簡介

Mercurial是一款非常優秀的分布式版本控制系統(DCVS),具有高效率、跨平臺、可擴展、使用簡便且開源等優點,是目前最為流行的版本控制工具之一。Mercurial英文意為水銀,所以常被縮寫為Hg。在使用Mercurial之前,我曾經使用過VSS(已停止更新)和SVN,也嘗試過微軟的TFS,它們都不是分布式版本控制系統,換句話說,就是當源碼服務器故障或網絡不通時,你將無法提交你所做的本地修改。這也是之前的版本控制工具與Mercurial最大的不同,目前與Mercurial類似的工具還有Git,但由於對Windows系統的支持做得不是很人性化,我個人不太喜歡。

最開始接觸Mercurial時,由於長期使用SVN的緣故,已經習慣了依賴中央源碼服務器,也曾感覺Mercurial的操作很別扭,不是很方便。但當我在項目中使用了一段時間以後,就喜歡上這個它了。下面放出Mercurial相關的一些信息:

  1. Mercurial官網:http://mercurial.selenic.com/
  2. Mercurial客戶端(TortoiseHg):http://tortoisehg.bitbucket.org/
  3. 支持Visual Studio中使用Mercurial的插件VisualHg:http://visualhg.codeplex.com/,如果你使用的是Visual Studio 2010或更高版本,可以直接從擴展管理器中獲取此插件。
  4. Mercurial官方中文教程:http://mercurial.selenic.com/wiki/ChineseTutorial
  5. 免費的代碼托管服務:https://bitbucket.org/,免費帳戶可以管理5個用戶,可以托管公共和私有項目。

Mercurial安裝

TortoiseHg本身集成了Mercurial的服務器功能,因此我們只需要獲取最新的TortoiseHg並安裝,即可在本地進行文件的版本控制。接下來你需要下載並安裝VisualHg以便於我們在Visual Studio中使用Mercurial。

TortoiseHg是集成在資源管理器中的,在安裝完成以後,我們在桌面空白處點擊右鍵便可以看到TortoiseHg的菜單項,具體見下圖:

技術分享圖片

在Visual Studio中,我們在解決方案管理器中的解決方案文件或項目文件上點擊右鍵,便會出現如下菜單:

技術分享圖片

如果你操作後看到的結果和上面一樣,那說明你已經完成了Mercurial的本地安裝,此時你已經可以用它來進行本地文件的版本控制,如果願意,你甚至可以在本地架設一個Mercurial版本控制服務器。

Mercurial基本操作

1.創建版本庫

在任意文件夾上,點擊右鍵,便可看到如下菜單:

技術分享圖片

在TortoiseHg的子菜單中選擇“在當前位置創建版本庫”,出現新的會話窗口:

技術分享圖片

勾選“添加特殊文件”選項,此處添加的便是Hg的全局忽略文件。以Visual Studio為例,全局忽略規則如下:

# Ignore file for Visual Studio 2008
 
# use glob syntax
syntax: glob
 
# Ignore Visual Studio 2008 files
*.obj
*.exe
*.pdb
*.user
*.msi
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.lib
*.sbr
*.scc
*.sws
*.pdsync
*.pdsyncu
~*.doc
*.orig
[Pp]ackages*/
[Bb]in*/
[Dd]ebug*/
[Ll]ogs/
Backup/
obj/
[Rr]elease*/
_ReSharper*/
_UpgradeReport_Files/
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
UpgradeLog.XML
*.csproj.user
*.ncb
*.suo

點擊創建以後,本地版本庫就創建完成了。此時你就看到了那個熟悉的圖標—綠色的對勾,是的,和SVN樣式相同的圖標。

2.提交變更集到本地版本庫

我們可以在Visual Studio的解決方案管理器中,右擊解決方案,然後就可以看到如下菜單:

技術分享圖片

選擇Commit後,可以看到提交會話窗口:

技術分享圖片

強烈建議大家寫一些有語義明確、對變更集描述清晰的提交日誌技術分享圖片。也可以直接到解決方案的文件夾上右擊,操作與同面描述的相同。

3.使用Bitbucket管理項目源碼

如果當前項目是個人開發的小型項目,上述操作便可滿足需求。但對於有多人參與合作開發的項目來說,只進行變更集的本地提交,顯然是不夠的。在沒有穩定的私有源碼服務器的情況下,我目前(推薦)的做法是,使用Bitbucket來托管項目源碼。免費版本的Bitbucket帳戶,可管理的團隊成員上限為五人,對於一般的開發團隊來說,我想這已經足夠了。好了,閑話少說,我們看一下怎麽利用Bitbucket來管理項目源碼。

註冊一個Bitbucket帳號,登錄以後,在控制面板頁面,可以看到如下的一些信息:

技術分享圖片

左側是你參與的項目的最新的變更信息以及事件的操作人,右側是你所參與或主持的項目。其中,封閉的鎖說明當前項目為私有項目,只能由項目所有者指定的開發人員進行源碼提交和修改,並且只對團隊成員可見;開發的鎖則說明是公共項目,源碼對所有人可見,任何人都可以查看並下載源碼。點擊Repositories旁邊綠色的加號,可以創建新的版本庫;也可以使用旁邊的導入版本庫的功能,從其他源碼服務器上同步源碼並創建版本庫。選擇新建版本庫後,可以看到下面的會話界面:

技術分享圖片

編程語言下拉列表中已經包含了幾乎所有的開發語言種類,雖然這個對版本控制影響並不是很大,但我還是建議你選擇正確的語言類型。項目創建成功後,便進入了項目的管理頁面,具體見下圖:

技術分享圖片

每個選項卡代表一個功能模塊,這裏我不再贅述,我只就當前介紹要用到的概覽(Overview)和管理(Admin)功能做一下說明。概覽頁面中,克隆(clone)後面的便是當前項目的同步URL。在本地文件夾的空白處點擊右鍵,選擇TortoiseHg—>clone:技術分享圖片

彈出的會話窗口中,在“源”那一欄填寫克隆地址,點擊克隆即可將版本庫下載至本地:

技術分享圖片

打開克隆到本地的版本庫,目錄結構如下:

技術分享圖片

其中,.hg目錄即是本地的Mercurial版本庫。

4.獲取外部變更集

前面已經描述了怎麽提交變更集到本地版本庫,在多人合作開發的情況下,我們還需要將本地變更集同步到中心服務器上。在同步之前,我們要先獲取外部變更集。操作如下:

在Hg工作臺(桌面空白處右鍵可見)中,選擇要操作的項目,如圖所示,點擊向下拉取的圖標:

技術分享圖片

在彈出的會話窗口中填寫Bitbucket網站中的帳號密碼:

技術分享圖片

獲取完成後,可看到如下分枝列表:

技術分享圖片

如果分枝列表的形狀如下圖所示,說明在你將本地變更集同步至服務器之後,團隊中其他成員已進行過合並操作,此時只需要在右鍵菜單中直接選擇更新(Update)即可:

技術分享圖片

否則,需要進行外部變更集和本地變更集的合並。

5.合並變更集

對於兩個不同的分枝,需要進行合並操作。如下圖所示,從菜單中選擇“與本地庫合並”:

技術分享圖片

在合並會話窗口中,取消“盡量自動解決合並的沖突”選項(個人感覺這個自動合並不但作用不大,反而影響合並後文件的準確性):

技術分享圖片

合並開始後,會自動提示沖突文件的個數,此時選擇窗口中的resolved選項:

技術分享圖片

在列出的沖突文件列表中,選擇“Mercurial Resolve”選項:

技術分享圖片

此時,沖突文件會移至“Resolved conflicts”列表,選擇其中的某個文件,點擊“3路合並(3-way diff)”:

技術分享圖片

三路合並工具我推薦大家使用(Beyond Compare),合並界面如下圖:

技術分享圖片

合並界面中,左側是本地版本,右側是外部版本,下方是合並後的文本。點擊綠色箭頭就會將本地版本合並到文件中,點紫色箭頭會將外部變更合並到文件中,版本選擇根據項目情況自行決定。

合並完成後,選擇當前修改的本地文件,並點擊下拉框右側的保存按鈕:

技術分享圖片

點擊提交,將合並結果提交至本地庫:

技術分享圖片

技術分享圖片

6.同步合並後的版本至托管服務器

打開Hg工作臺(Workbench),選擇快捷菜單欄的推送按鈕(向右上的綠色箭頭):

技術分享圖片

在彈出的推送會話窗口中選擇“確認(Yes)”,並填寫Bitbucket的帳戶密碼:

技術分享圖片

技術分享圖片

同步開始後,可以在最下方的日誌輸出窗口看到同步狀態:

技術分享圖片

進度條結束,同步操作即已完成:

技術分享圖片

============ End

Mercurial(Hg)基本操作