Mercurial(Hg)基本操作

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的菜单项,具体见下图:

image

在Visual Studio中,我们在解决方案管理器中的解决方案文件或项目文件上点击右键,便会出现如下菜单:

image

如果你操作后看到的结果和上面一样,那说明你已经完成了Mercurial的本地安装,此时你已经可以用它来进行本地文件的版本控制,如果愿意,你甚至可以在本地架设一个Mercurial版本控制服务器。

 

Mercurial基本操作

1.创建版本库

在任意文件夹上,点击右键,便可看到如下菜单:

image

在TortoiseHg的子菜单中选择“在当前位置创建版本库”,出现新的会话窗口:

image

勾选“添加特殊文件”选项,此处添加的便是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的解决方案管理器中,右击解决方案,然后就可以看到如下菜单:

image

选择Commit后,可以看到提交会话窗口:

$]($H(RA62C8$F[ZM$GV]SA

强烈建议大家写一些有语义明确、对变更集描述清晰的提交日志6ZD$%HBUZ[H~@Y(R{46]9`1  。也可以直接到解决方案的文件夹上右击,操作与同面描述的相同。

3.使用Bitbucket管理项目源码

如果当前项目是个人开发的小型项目,上述操作便可满足需求。但对于有多人参与合作开发的项目来说,只进行变更集的本地提交,显然是不够的。在没有稳定的私有源码服务器的情况下,我目前(推荐)的做法是,使用Bitbucket来托管项目源码。免费版本的Bitbucket帐户,可管理的团队成员上限为五人,对于一般的开发团队来说,我想这已经足够了。好了,闲话少说,我们看一下怎么利用Bitbucket来管理项目源码。

注册一个Bitbucket帐号,登录以后,在控制面板页面,可以看到如下的一些信息:

z2ym80co340ojkuyzg_thumb3

 

左侧是你参与的项目的最新的变更信息以及事件的操作人,右侧是你所参与或主持的项目。其中,封闭的锁说明当前项目为私有项目,只能由项目所有者指定的开发人员进行源码提交和修改,并且只对团队成员可见;开发的锁则说明是公共项目,源码对所有人可见,任何人都可以查看并下载源码。点击Repositories旁边绿色的加号,可以创建新的版本库;也可以使用旁边的导入版本库的功能,从其他源码服务器上同步源码并创建版本库。选择新建版本库后,可以看到下面的会话界面:

image

编程语言下拉列表中已经包含了几乎所有的开发语言种类,虽然这个对版本控制影响并不是很大,但我还是建议你选择正确的语言类型。项目创建成功后,便进入了项目的管理页面,具体见下图:

image

每个选项卡代表一个功能模块,这里我不再赘述,我只就当前介绍要用到的概览(Overview)和管理(Admin)功能做一下说明。概览页面中,克隆(clone)后面的便是当前项目的同步URL。在本地文件夹的空白处点击右键,选择TortoiseHg—>clone:image

弹出的会话窗口中,在“源”那一栏填写克隆地址,点击克隆即可将版本库下载至本地:

image

打开克隆到本地的版本库,目录结构如下:

image

其中,.hg目录即是本地的Mercurial版本库。

 

 

4.获取外部变更集

前面已经描述了怎么提交变更集到本地版本库,在多人合作开发的情况下,我们还需要将本地变更集同步到中心服务器上。在同步之前,我们要先获取外部变更集。操作如下:

在Hg工作台(桌面空白处右键可见)中,选择要操作的项目,如图所示,点击向下拉取的图标:

获取外部变更集

在弹出的会话窗口中填写Bitbucket网站中的帐号密码:

获取外部变更集01

获取完成后,可看到如下分枝列表:

Hg分枝列表

如果分枝列表的形状如下图所示,说明在你将本地变更集同步至服务器之后,团队中其他成员已进行过合并操作,此时只需要在右键菜单中直接选择更新(Update)即可:

获取外部更新后直接更新

否则,需要进行外部变更集和本地变更集的合并。

5.合并变更集

对于两个不同的分枝,需要进行合并操作。如下图所示,从菜单中选择“与本地库合并”:

外部变更集与本地库合并

在合并会话窗口中,取消“尽量自动解决合并的冲突”选项(个人感觉这个自动合并不但作用不大,反而影响合并后文件的准确性):

合并会话窗口

合并开始后,会自动提示冲突文件的个数,此时选择窗口中的resolved选项:

MQ@[%~MY]9TYP6AP((_Y6}J

在列出的冲突文件列表中,选择“Mercurial Resolve”选项:

(}DFQEA20FD~0Z([1Q{W2~A

此时,冲突文件会移至“Resolved conflicts”列表,选择其中的某个文件,点击“3路合并(3-way diff)”:

$EEQ61F79PZJCP8@ENZP{92

三路合并工具我推荐大家使用(Beyond Compare),合并界面如下图:

9WKFG{1QR]GN2H]UPMB[CV4

合并界面中,左侧是本地版本,右侧是外部版本,下方是合并后的文本。点击绿色箭头就会将本地版本合并到文件中,点紫色箭头会将外部变更合并到文件中,版本选择根据项目情况自行决定。

合并完成后,选择当前修改的本地文件,并点击下拉框右侧的保存按钮:

`HTMIM88`8EDL$O`V7$DEQM

 

点击提交,将合并结果提交至本地库:

OSW)AZ8CUGDD{$06U$U%UL3

[@G$T2P(1_2C(B~GAH1[1(V

6.同步合并后的版本至托管服务器

打开Hg工作台(Workbench),选择快捷菜单栏的推送按钮(向右上的绿色箭头):

同步操作按钮

在弹出的推送会话窗口中选择“确认(Yes)”,并填写Bitbucket的帐户密码:

推送会话窗口

推送会话填写密码

同步开始后,可以在最下方的日志输出窗口看到同步状态:

同步进行中日志

进度条结束,同步操作即已完成:

同步完成日志

 

============ End

 

转载于:https://www.cnblogs.com/lsgxeva/p/10195072.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SPI实验

目录SPI & ICM-20608 简介SPI 简介SPI四线SPI四种工作模式SPI时序图I.MX6U ECSPI 简介ICM-20608 简介硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载同I2C 一样,SPI 是很常用的通信接口,也可以通过SPI 来连接众多的传感器。相…

ADC实验(读取引脚电压值)

目录ADC 简介什么是ADCI.MX6ULL ADC 简介ADC寄存器介绍配置步骤硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载ADC 是一种常见的外设,你可以在STM32 上见到它,在I.MX 6ULL 上依然能看到它的存在。通过读取GPIO 引脚的高低电平我们…

Linux CAN 驱动实验

目录CAN 协议简析何为CANCAN 电气属性显隐性电平接线端接电阻速度距离CAN 协议1、数据帧2、遥控帧3、错误帧4、过载帧5、帧间隔CAN 速率I.MX6ULL FlexCAN 简介硬件原理图分析实验程序编写修改设备树使能Linux 内核自带的FlexCAN 驱动FlexCAN 测试检查CAN 网卡设备是否存在移植i…

MySQL存储引擎MyISAM和 InnoDB

2019独角兽企业重金招聘Python工程师标准>>> 区别 事务处理MyISAM强调性能,但是不提供事务支持InnoDB提供事务支持,外部键等CURD操作如果执行大量SELECT,MyISAM更合适(读)如果执行大量INSERT/UPDATE,InnoDB更合适(写)DELETE FROM table时,InnoDB不会重新…

Luogu 4721 【模板】分治 FFT

还不会这题的多项式求逆的算法。 发现每一项都是一个卷积的形式,那么我们可以使用$NTT$来加速,直接做是$O(n^2logn)$的,我们考虑如何加速转移。 可以采用$cdq$分治的思想,对于区间$[l, r]$中的数,先计算出$[l, mid]$中…

根文件系统构建(Buildroot 方式)

目录何为buildroot?buildroot 简介buildroot 下载buildroot 构建根文件系统配置buildroot编译buildrootbuildroot 根文件系统测试buildroot 第三方软件和库的配置buildroot 下的busybox 配置busybox 配置busybox 中文字符的支持编译busybox根文件系统测试前面我们学…

Jquery weui picker 支持label和value

万年没更新了. 最近用jquery weui. 在使用picker时需要一些问题. 就是让picker 显示label, 但是取值的时候取value用于存储. 官网例子如下 Jquery-weui 官网 : 点这里 写这篇文章时,用的版本是1.2.1版本 $("#picker-name").picker({title: "请选择您…

Linux—任务计划

1、周期性任务计划:管理系统的过程中,我们并不是每次都直接执行脚本或者命令,有时候需要让脚本、命令以及系统等在指定的时间按照我们的意愿执行我们设定好的脚本或者命令,这时候就需要使用到Linux任务计划的功能了,但…

计算机网络第1章(概述)

B站视频:计算机网络微课堂(有字幕无背景音乐版) 网址:https://www.bilibili.com/video/BV1c4411d7jb?p61 目录图示说明1.1、计算机网络在信息时代的作用我国互联网发展状况1.2、因特网概述1、网络、互连网(互联网&…

Linux命令(七)Linux用户管理和修改文件权限

1. 用户管理 1.1 创建用户/设置密码/删除用户 (-m很重要,自动添加用户家目录) 创建用户组dev, 给用户组dev新建xiaoqin用户,给新用户设置密码! 1.2 查看用户信息 1.3 设置用户主组/附加组 (常使用修改用户附…

元模型驱动

感谢徐昊给我们传授这么好的思想。虽然我现在还没有全部弄明白——————————在网上查到了元数据的解释是关于数据的数据。那么元模型就是关于模型的模型。抽象的过程就是形成元模型的过程。建模的过程就是抽象的过程。我们要形成object的模型,所以建立了的是…

2月末周全球域名解析商Top15:万网DNSPod份额均上涨

IDC评述网(idcps.com)03月11日报道:据域名统计机构WebHosting.info最新数据,在2月末周(截至3月3日)期间,我国仍是两名域名解析服务商跻身进全球前十五强。其中,中国万网排名第9&…

计算机网络第4章(网络层)

B站视频:计算机网络微课堂(有字幕无背景音乐版) 网址:https://www.bilibili.com/video/BV1c4411d7jb?p61 目录4.1、网络层概述简介总结4.2、网络层提供的两种服务面向连接的虚电路服务无连接的数据报服务虚电路服务与数据报服务的…

Struts2中action接受参数方法

Struts2中Action接收参数的方法主要有以下三种:1.使用Action的属性接收参数: a.定义:在Action类中定义属性,创建get和set方法; b.接收:通过属性接收参数,如:userName&#xff…

计算机网络第5章(传输层)

B站视频:计算机网络微课堂(有字幕无背景音乐版) 网址:https://www.bilibili.com/video/BV1c4411d7jb?p61 目录5.1、运输层概述概念总结5.2、运输层端口号、复用与分用的概念为什么用端口号发送方的复用和接收方的分用TCP/IP体系的…

计算机网络第6章(应用层)

B站视频:计算机网络微课堂(有字幕无背景音乐版) 网址:https://www.bilibili.com/video/BV1c4411d7jb?p61 目录6.1、应用层概述6.2、客户/服务器方式(C/S方式)和对等方式(P2P方式)概…

[Linux主机] 优化你的php-fpm(php5.3+)让你的网站跑得更快

2019独角兽企业重金招聘Python工程师标准>>> [Linux主机]优化你的php-fpm(php5.3)让你的网站跑得更快 从php5.3以后php自带了php-fpm不是和php5.2一样以插件的方式存在了。这给我们带来一个好处502没有那么容易出现了 坛子里用linux的绝大多数应该还是在…

Linux网络编程——千峰物联网笔记

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

必须掌握的前端模板引擎之art-template

常用的模板引擎有tpl.js、baiduTemplate、doT.js、art-template等等; 我所理解的模板引擎就是把js数据传到html中展示出来; art-template 是一个简约、超快的模板引擎。 art-template有两种语法: 一、标准语法可以让模板更容易读写&#xff1…

蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

目录蓝牙配对和绑定蓝牙4.0 BLE信道(RF Channel)BLE协议栈分层PHY层(Physical layer 物理层)LL层(Link Layer 链路层)HCI层(Host controller interface 主机控制接口层)L2CAP层(Logic link control and adaptation protocol 逻辑链路控制和自适应协议)SMP层(Secure manager pro…