• Mercurial(Hg)基本操作


    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的帐户密码:

    推送会话窗口

    推送会话填写密码

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

    同步进行中日志

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

    同步完成日志

  • 相关阅读:
    Css实现漂亮的滚动条样式
    清除浮动的方式有哪些?比较好的是哪一种?
    Cookie、sessionStorage、localStorage的区别
    http和https的区别?
    git 拉取分支切换分支
    css 三角形
    js中??和?.的意思
    js this指向
    tsconfig.json配置
    查看本地安装的所有npm包
  • 原文地址:https://www.cnblogs.com/gb2013/p/Mercurial_Basic.html
Copyright © 2020-2023  润新知