天天看點

hg分布式管理工具操作方法

        Mercurial是一個跨平台的分布式版本控制工具。主要由Python語言實作,也包含一個用C語言實作的二進制比較工具。對Mercurial的所有操作都由不同的關鍵字作為hg的參數來實作的。它采用SHA-1雜湊演算法來識别修訂版本,使用一個基于HTTP的協定來接入網絡中版本庫,在2005年第一次釋出。轉換插件可以将其他版本庫轉換成Mercurial的版本庫。從第6版開始支援Netbeans。TortoiseHg提供一個面向Windows的基于右鍵菜單的快捷方式。

      Mercurial有個嚴重的缺點:不支援針對單個檔案夾的分支。Python、Firefox、Google都使用Hg作為版本控制工具,與Git相比,跨平台,而且性能高。代碼托管可以選擇BitBucket。

下面操作方法使用之前,必須搭建好hg伺服器。

操作方法:

1.下載下傳源代碼:進入要放置代碼的目錄,比如I盤;hg clone ssh://[email protected]:22/DEV300-hg [dir name] :若不指定代碼目錄名稱,則名字自動為DEV300-hg密碼:*****

2.檢視目前資訊:

hg branches :檢視該主幹上的所有CWS分支

hg branch :顯示目前代碼的CWS名稱(初次下的代碼預設為主幹,名稱為default)

3.建立CWS

hg branch cws-name :建立CWS,必須保證目前的代碼環境為主幹,即hg branch指令查詢的結果為default

4.切換分支:hg update -r cws-name :切換目前代碼環境為相應的CWS,此指令隻切換分支,并不下載下傳實際的源檔案

hg update -r default :切換至主幹

hg update -C -r cws-name :切換CWS的同時将代碼更新為該CWS的代碼,但是切換之前的分支中的未送出代碼将丢失

5.更新目前分支:

hg pull;

hg update;

或hg pull -u :将目前CWS更新至最新代碼

6.添加新檔案至CWS

hg add path/file1 path/file2 ... :添加新檔案,指定每個所添加檔案的詳細路徑,多個檔案之間用空格分開,防止添加不相關的檔案

hg status :在添加新檔案之前,可以用該指令查詢目前代碼中的未知檔案

7.代碼送出至本地代碼庫之前的檢查:

hg status -m :查詢所修改的檔案清單

hg status -a :查詢所添加的新檔案清單

8.代碼送出至本地代碼庫:hg commit -m "your comments to your codes" path/file1 path/file2 ...

9.送出至伺服器之前的驗證:

hg log -v -r tip :送出至本地代碼庫後,檢查送出的是否正确,若有問題,運作下一指令,重新送出hg rollback :若有問題,運作此指令,再重新送出hg outgoing :再次驗證10.送出代碼至伺服器:hg push [-f] :将代碼送出至伺服器,在保證前面的程式正确無誤後,再執行此送出

P.S.:-f參數隻有在第一次建立CWS時使用,以便将該CWS push到伺服器上去,之後送出代碼時都不用此參數

"hg push"時很有可能你的送出會被拒絕(提示會增加一個遠端heads),這表明有人在你pull之後且在你push之前在你工作的同一個分支上已經push過代碼了,你必須更新後才能push。解決方法是使用"hg pull -u"指令更新代碼(或更精确的使用"hg pull -u -r 分支名"更新你所在分支的代碼即可,此法有時似乎行不通),然後使用"hg merge"解決沖突,解決完沖突後commit,這時再使用"hg push"指令就可以了。

11.查詢分支的操作記錄

hg log -v -b cws-name :查詢相應分支的操作記錄

12.查詢記錄

hg log 指令有很多有用參數可以幫助我們比較友善的查詢曆史送出記錄以友善追溯代碼。例如: "hg log -u myname" 會列出使用者myname的所有送出記錄。

"hg log -d 2010-01-28" 會列出在2010-01-28這一天的所有送出記錄。

關于日期格式可用"hg help dates"檢視。

"hg log -k bug25703" 會列出包含bug25703這個關鍵字的所有送出記錄,(注意hg關鍵字搜尋包含兩個地方:送出檔案和送出注釋)。

以上選項-u -d -k 還可以組合使用以提高搜尋命中率,

例如:"hg log -u zongyuan.xiao -d "2010-01-28 to 2010-01-29" -k bug25703" 會搜尋使用者zongyuan.xiao在從2010-01-28到2010-01-29這兩天的所有包含關鍵字bug25703的送出記錄。

"hg log path/to/a.cxx" 可以檢視指定檔案的記錄(多個檔案用空格分開),當然也可以使用上面提到的選項 -u -d -k 等。