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)基本操作的更多相关文章

  1. mercurial(Hg) Server 搭建 过程记录

    mercurial(Hg) Server 搭建 过程记录 1.  环境说明 只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5 软件准备: 2.  软件安装 先安装Python2.7, ...

  2. Mercurial(HG) Windows+Eclipse安装、配置、使用

    Mercurial(HG) Windows客户端安装 Mercurial(HG): http://mercurial.selenic.com/ Windows客户端下载:http://mercuria ...

  3. mercurial(hg)使用

    # 版本管理软件的比较 svn 每个目录下建一个.svn目录实在是不爽. git 分支管理非常方便,但没感觉有什么用,主要还是在修改前提交一次代码, 等后悔时再回来,没什么其他的目的.关键是中文乱码问 ...

  4. debian7(wheezy)升级安装mercurial hg最新版2.8-RC,解决tortoisehg2.9.2不能使用。

    debian&(wheezy)之前的仓库版本是2.2.2.  注: 本文以 # 为开始的行是工作在root下的模式,在终端显示为root的提示符# ,用户目录的($:)需要切换到root(使用 ...

  5. Mercurial hg web server的配置

    在windows下安装tortoisehg-1.0.3-hg-1.5.3-x64.exe的版本控制工具后,克隆建立中心库后,启动web server,其他分库可以连接中心库进行pull但无法push. ...

  6. Mercurial (hg) Hook : PHP Syntax Check , hg 代码检测 钩子

    用百度搜了一遍hg的hook教程,发现真的是太少了.公司目前正要用到这个,正好本人负责,So. 百度是个坑,少有的几篇文章,再加上善于发现的眼睛,发现TortoiseHg的UI操作都会在控制台显示动作 ...

  7. TortoiseHg简单的入门使用说明

    参考资料: 互普的 TortoiseHg使用说明_百度文库 Mercurial(Hg)基本操作 - Tim Gong - 博客园 Mercurial与TortoiseHg使用入门教程(转) - mee ...

  8. Mercurial笔记(hg命令)

    两个站点: http://z42.readthedocs.org/zh/latest/devtools/hg.html http://bucunzai.net/hginit/ 添加用户名 在.hg目录 ...

  9. Mercurial (hg)

    附上两个站点: http://z42.readthedocs.org/zh/latest/devtools/hg.html http://bucunzai.net/hginit/ Mercurial( ...

随机推荐

  1. c#中的多线程异常 (转载)

    1.对于Thread操作的异常处理 public static void Main() { try { Thread th = new Thread(DoWork); th.Start(); } ca ...

  2. 深入理解 JVM(上)

    菜鸟拙见,望请纠正(首先:推荐一本书[链接:https://pan.baidu.com/s/15I062n5LPYtRmueAAUFuFA 密码:kyo1]) 一:JVM体系概述 1:JVM是运行在操 ...

  3. JavaWeb开发中采用FreeMarker生成Excel表格

            最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...

  4. iisapp -a命令出现 :此脚本不能与WScript工作

    今天一个同事向我反馈,使用iis的命令时出现了如标题的问题. 通过百度,找到如下信息: iisapp实际上是存放在C:\windows \system32目录下的一个VBS脚本,全名为iisapp.v ...

  5. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  6. ETL流程介绍及常用实现方法

    ETL是英文Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.常见于数据仓库开发中将数 ...

  7. Nagios数据存储插件NDOUtils部署和测试

    1. 概述 NDOUTILS,Nagios Data Output Utils,Nagios数据输出工具,允许用户从Nagios导出状态和事件信息到数据库中,便于以后的检索和加工 它包括几个部分: N ...

  8. 分布式监控系统Zabbix-批量添加聚合图形

    之前部署了Zabbix(3.4.4版本)监控环境,由于主机比较多,分的主机组也比较多,添加聚合图形比较麻烦,故采用python脚本进行批量添加聚合图形.脚本下载地址:https://pan.baidu ...

  9. mariadb第二章-增删改

    MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型 整数:int, bit 小数:de ...

  10. bootmgr is conmpressed联想Z485

    昨天清理磁盘空间的时候,手贱把驱动器给压缩了.再开机的时候就遇到了bootmgr is conmpressed. 我把解决办法发布到百度经验上了 http://jingyan.baidu.com/ar ...