使用 HG 来作为代码管理工具

1 用 HG 配合 SVN 代码仓库进行版本管理

如果你们公司是用 SVN 作为代码仓库的话,肯定经常碰到一个问题,没有写好的代码、没有经过仔细测试的代码,没有提交到代码仓库的信息,免得影响其他人的使用。

1.1 首先安装 hg

如果你是在 Windows 下,推荐使用 TortoiseHg 客户端,理由无需多说。

如果你要配合 Subversion 来使用 HG,官方提供了三种方式,各位可以根据自己的喜好选择。我们这里选择 hgsubversion 插件的方式。

1.2 TortoiseHg 几个使用小技巧

一般来说,会使用 Subversion 的人,使用 TortoiseHg 都会上手特别快,这里有一份为 SVN 熟手准备的 Hg 简明教程。

使用 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 的图下来,看看:

配置 hgrc 文件,让 hg 找到 hgsubversion 这个插件。如果你用的是 TortoiseHg ,可以直接在 Hg Workbench 界面里的 setting 里进行操作,里面有一个大大的*编辑文件*按钮。

在配置文件里,添加下面的内容。

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

注意,这里要设置到子目录 hgsubversion 里,否则会提示找不到 hgsubversion 这个插件。

如果你想看看这个插件是否安装好了,可以试一下这个命令:

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

你可能感兴趣的:(hg)