使用 HG 來做爲代碼管理工具

1 用 HG 配合 SVN 代碼倉庫進行版本管理

若是大家公司是用 SVN 做爲代碼倉庫的話,確定常常碰到一個問題,沒有寫好的代碼、沒有通過仔細測試的代碼,沒有提交到代碼倉庫的信息,省得影響其餘人的使用。 html

1.1 首先安裝 hg

若是你是在 Windows 下,推薦使用 TortoiseHg 客戶端,理由無需多說。 python

若是你要配合 Subversion 來使用 HG,官方提供了三種方式,各位能夠根據本身的喜愛選擇。咱們這裏選擇 hgsubversion 插件的方式服務器

1.2 TortoiseHg 幾個使用小技巧

通常來講,會使用 Subversion 的人,使用 TortoiseHg 都會上手特別快,這裏有一份爲 SVN 熟手準備的 Hg 簡明教程svn

使用 TortoiseHg 有下面幾個要迅速掌握的東西: 測試

  1. 點鼠標右鍵,點擊 "Hg WorkBench" 能夠得到詳細的提交日誌、版本信息,以及版本樹示意圖。
  2. 點鼠標右鍵,點擊 "TortoiseHg" ==> "Synchronize",能夠與服務器的數據進行同步,裏面有若干個選項須要注意。
  3. 命令 $ hg commit 是用來提交代碼到本地倉庫,若是要同步修改到服務器,則須要用 $ hg push 命令才行。
  4. 常常在版本信息裏出現的名詞 tip 是指最新版本號,這個是內置的標籤(tag)。
  5. 每個分支的最新版本號被統稱爲 head
  6. 若是已經提交了代碼,須要回滾代碼,則用命令 $ hg rollback ;若是你只是做了修改尚未提供代碼到本地分支,則能夠直接用命令 $ hg revert 去丟掉未提交的修改。

2 用 hgsubversion 插件來配合 SVN 使用 Hg

2.1 安裝 hgsubversion 插件

安裝 hgsubversion 插件,最簡單的方法,不外乎直接把這個插件 clone 下來,官網上已經把標準的命令行方法講清楚了。我這裏截一張 Windows TortoiseHg 的圖下來,看看: spa

./images/hgsubversion-download.png

配置 hgrc 文件,讓 hg 找到 hgsubversion 這個插件。若是你用的是 TortoiseHg ,能夠直接在 Hg Workbench 界面裏的 setting 裏進行操做,裏面有一個大大的*編輯文件*按鈕。 插件

在配置文件裏,添加下面的內容。 命令行

[extensions]
hgsubversion = D:\Program Files\TortoiseHgExtentions\hgsubversion\hgsubversion

注意,這裏要設置到子目錄 hgsubversion 裏,不然會提示找不到 hgsubversion 這個插件。 日誌

若是你想看看這個插件是否安裝好了,能夠試一下這個命令: code

hg help hgsubversion

看提示你就知道是否一切正常了。

2.2 從 SVN 裏 clone 一份代碼出來

下面能夠檢出系統代碼了!點擊鼠標右鍵,在 Hg 菜單裏點擊 clone 選項,按下圖所示填寫SVN檢出信息:

./images/hg-svn-checkout.png

若是你填入 SVN 地址的時候,碰到如下問題:

% hg clone --verbose svn+https://127.0.0.1/svn/TestProject/01項目文檔 -- E:\test\testhg
停止: URL 'https://127.0.0.1/svn/TestProject/01項目文檔' is malformed or the scheme or host or path is missing (SVN_ERR_RA_ILLEGAL_URL)
[command returned code 255 Thu Apr 14 15:10:06 2011]

這是由於你的路徑裏包含有中文字符串,這在 SVN 的 URL 裏嚴格來講是要用不少轉義字符來表達的。若是你把

https://127.0.0.1/svn/TestProject/01項目文檔

改成svn路徑:

https://127.0.0.1/svn/TestProject/01%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3

就可以順利檢出 SVN 文檔。

什麼?你不知道怎麼得到這個地址,你能夠查看你 SVN 裏的記錄。

2.3 從本地 Hg 分支提交修改到 Subversion 服務器

經過 hg 你在本地修改了代碼,當修改完成並所有經過測試後,你必定要提交回 Subversion 服務器,這樣別人才能看到你的代碼。

要提交修改回 Subversion 服務器很簡單,須要先確保修改都提交到了本地的 Hg 服務器裏:

$ hg commit -m 'your log info'

而後再把 hg 裏當前的代碼版本提交到 Subversion 服務器裏:

$ hg push

這樣,你就能夠把你修改的代碼提交到 SVN 代碼服務器裏了。不信,你到 SVN 代碼目錄裏 update 一下看看!

2.4 SVN 有更新後 Hg 的狀態

若是SVN服務器上的內容有更新,則你在 hg 裏用命令從SVN再次更新最新的內容到本地 hg 分支後,將會獲得一個奇怪的副本。

這個副本是一個新的分支,內容徹底和 SVN 上最新版本相相似;而你本地修改的代碼,將放在另一個代碼分支上。

你能夠經過點擊右鍵 ==> "Hg Workbench" 來查看這個代碼樹分支。

出現相似的狀況,你須要作的是,選擇一個代碼分支做爲你的當前分支繼續工做;或進行相應的合做操做。

2.5 其它疑問

爲何 clone 完了之後,卻沒有文件呢,目錄裏只有一個 .hg 目錄?

有關這個問題,瀏忙緒緒我專門寫了一個博文《把 SVN 文檔導入到 Hg 後目錄爲空的問題》來論述,嘿嘿~~

3 用 hgsvn 來與 SVN 代碼進行交互

若是用上面的方法,顯得麻煩一些。若是我只是想維護一個本地的代碼倉庫,用來臨時作一個修改,測試沒問題的時候,我再提交到 SVN 倉庫裏。

這個時候,你能夠考慮用 hgsvn 來作本地的代碼版本管理,平時都提交到本地的代碼倉庫裏,一旦工做完成,則提交到 SVN 版本庫裏。



http://cn.waterlin.org/ProjectManagement/Hg.html

相關文章
相關標籤/搜索