1、 创造更高顾客价值!TortoiseHg使用说明一、 概述TortoiseHg 是一个跨平台的 Mercurial 分布式版本控制系统的可视化客户端工具,有方便开发人员搭建开发环境、协同开发、提交修改、跟踪版本变更,易学易用等特点,因其命令常以hg开头,以下简称Hg。互普软件开发部使用一个Hg服务器库来完成一个产品的一个版本的版本控制,管理该版本中经常变更的代码、UT/IT用例、脚本文件等。为方便开发人员搭建开发环境,与该版本开发有关的工具和文档也可以放在Hg服务器,因二进制文件不便于查看变更记录,所以这类文件不作为版本管理的重点。对于版本开发过程中产生的正式的过程文档,如需求规格说明书、产品
2、的操作使用说明书等,直接由配置管理工具TortoiseSvn来管理。用Hg作为版本管理工具,主要有以下几个步骤:1、 在Windows环境中安装配置Hg;2、 创建版本的Hg服务器;3、 开发人员clone Hg服务器到本地,搭建本地开发环境;4、 开发人员修改本地代码,本地编译验证通过;5、 从Hg服务器获取最新的版本到本地,本地编译验证通过;6、 开发人员获取代码合入token,合入代码,释放token。没有获得token,只能等待,得到token后,重复步骤4,之后合入代码,释放token。Hg使用过程中需要特别注意的几个问题:1、 严禁直接到Hg服务器合入代码,所有的修改都必须从Hg客
3、户端推送;2、 当存在冲突的时候,Hg支持强制推送,但禁止强制推送。3、 虽然Hg支持多人同时向Hg服务器推送,Hg也能完成有关的冲突解决,但是,多人同时推送需要很多的节点合并工作,特别是对相同文件相同代码行的修改可能会引入较大的冲突风险。因此,为减少这些问题,要求开发人员采用串行向Hg服务器推送的方式。具体如下:项目组创建一个向Hg服务器推送的web token(令牌)页面,开发人员需要先获取token,之后才能向Hg服务器推送,推送完成后释放token。未获得token的开发人员,不能向Hg服务器推送。如果token被占用,能清楚看到谁在占用。4、 向Hg提交代码的原则。在完成一个功能点的
4、代码开发或修改后,哪怕只修改了一行代码,本地编译验证通过,不影响他人功能,就可以将代码提交推送到Hg服务器,不要在本地积压太多的代码,一次性向Hg服务器提交推送,这样提交的代码可能包含一些问题,但因为时间长了,你可能遗忘了。同时,一次提交涉及的代码太多,也不利于问题定位。建议在集中开发代码的这一段时间,每天向Hg服务器至少要提交推送一次,这样也便于其他人了解开发进度。5、 每次提交到要填写提交说明,便于后续跟踪定位问题。6、 如果在使用Hg的过程出现异常情况自己不太清楚,先弄清问题所在或咨询身边同事,不要随便操作,以免破坏项目组Hg服务器,影响版本开发。二、 具体使用步骤:1、 在Window
5、s环境中安装配置TortoiseHg双击安装包,在安装向导中单击【Next】,按默认的方式完成安装就可以了。在桌面单击右键,从弹出式菜单中选择【TortoiseHg】-【Global Settings】,弹出如下TortoiseHg设置窗口:单击窗口左边列表中的【提交】项,在【用户名】处输入提交用户名。单击【OK】保存。2、 创建版本的Hg服务器。在一台公共的电脑剩余空间较大的分区创建目录,目录名一般为产品名+版本号,如NACV100R001C00,将该目录共享给相关人员,包括读写权限,以下称为Hg服务器库目录。在资源管理器中选中Hg服务器库目录,单击右键,选择弹出式菜单中的【Tortoise
6、Hg】-【Create Repository Here】,弹出如下窗口:单击【创建】按钮,完成Hg服务器库的初始建立。将版本有关的初始文件拷贝到Hg服务器库目录,之后在资源管理器选中该目录,单击右键,选择【TortoiseHg】-【Add Files】,弹出增加文件窗口:单击【添加】按钮,将版本初始文件加入Hg服务器库。再次在资源管理器选中Hg服务器库目录,单击右键,单击【Hg Commit】,弹出提交窗口:输入提交说明,单击【提交】按钮,完成提交。3、 开发人员clone Hg服务器到本地,作为本地开发环境开发人员在本地电脑资源管理器任意目录下,单击右键,选择弹出式菜单中的【Tortoise
7、Hg】-【Clone】,弹出克隆Hg服务器窗口:在【源】处输入Hg服务器库路径,单击【克隆】按钮,运行完成后,Hg服务器就克隆到本地。4、 本地提交和向Hg服务器推送代码操作开发人员在本地Hg库完成修改,做一次提交,本地Hg库就会产生一个新的节点,要想将这个节点推送到Hg服务器,必须保证这个节点是Hg服务器最新的节点,因此在做本地提交之前,先要将Hg服务器最新的更新拉取到本地。具体操作是:在资源管理器中本地Hg库目录上单击右键,选择弹出式菜单中的【TortoiseHg】-【Synchronize】,弹出如下同步窗口:单击第二个图标【从指定URL拉取更新】。之后,在资源管理器中本地Hg库目录上单
8、击右键,选择弹出式菜单中的【Hg Commit】,弹出如下提交窗口:填写提交说明后,单击【提交】按钮,完成提交。之后回到同步窗口,单击第四个图标【推送更新到指定URL】,完成推送。如果没有从Hg服务器拉取更新就提交本地更新,本地Hg库就会产生一个新的头节点,而Hg服务器可以因其他人的提交和同步,也产生了新的头节点,这时就不能强制将本地更新推送到服务器,否则Hg服务器就会有多个头节点,其他人无法操作。这时如果你拉取Hg服务器更新到本地,在【TortoiseHg WorkBench】中看本地Hg库,就会有两个头节点,如下图所示:解决这个问题办法是(由于我还没发现这个操作如何在图形界面下完成,只能用Windows命令来解决了),打开Windows命令提示符,将当前目录改为本地Hg库所在目录,输入hg head命令回车,你会看到本地当前Hg库有两个头。输入hg merge命令回车,完成两个hg头节点的合并,完成头节点合并后需要在再提交一次,之后推送更新到Hg服务器。上述所有图形界面操作都有对应的Windows命令,分别是:hg inithg clonehg addhg commithg pullhg pushhg headhg merge具体的使用可以参看帮助文档或在网上搜索。9