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 来连接众多的传感器。相…

Office安装源损坏

故障现象:安装office时,提示“Microsoft office安装程序无法继续,因为安装源错误”。解决方案:1.从Microsoft下载中心,下载最新版本Microsoft XML Parser(MSXML)安装。2.重新注册Msxml3.dll文件,运行Regsvr…

filter-mutate过滤插件

之前的nginx日志使用grok匹配,但是后来发现nginx的日志中每个值之间都使用了分隔符"|",这下就可以使用mutate来分隔出每个字段的含义,同时还减少了运算。 描述 mutate过滤器允许您对字段执行常规突变。您可以重命名,删除&#xff0…

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…

git 常用的撤销操作

git 开发时的使用流程,从同事那里学习的, 第一步,先建立一个新的分支,可以在GITLAB或通过命令git checkout -b newbranch 或通过IDE插件 第二步,让项目切换到该分支,然后在这个分支上进行开发 第三个&#…

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根文件系统测试前面我们学…

Kernel panic -not syncing:Attempted to kill init!

DELL R210II安装RHEL后启动系统正常,关机再装磁盘阵列卡接好磁盘阵列,开机后CTRLR进入界面配置RAID5。启动后出现错误: Kernel panic -not syncing:Attempted to kill init! 解决过程:1、强行关机,再重启进入系统选择界…

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

本章有独立的教程,请参考《【正点原子】I.MX6U Yocto 构建根文件系统V1.0.pdf》!

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、网络、互连网(互联网&…

django 中使用 channels 实现websocket

.... 转载于:https://www.cnblogs.com/zxmbky/p/10203009.html

HDU 1754线段树

第一个自己动手写的线段树&#xff0c;1Y还是有点小激动哈&#xff08;虽然是模版题&#xff09; 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 using namespace std;5 const int SIZE200005;6 const int INF1000000;7 int maxv[SIZE<&l…

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

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

元模型驱动

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

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

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

IHttpHandler与IHttpHandlerFactory的区别一例

在进行访问请求拦截处理时&#xff0c;处理类可以继承自IHttpHandler也可以继承自IHttpHandlerFactory&#xff0c;但他们之间有什么区别呢&#xff1f;近日开发一个需要拦截访问处理的项目&#xff0c;由于需要使用到SESSION&#xff0c;在这里发出了求助贴子&#xff08;积木…