zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/10195072.html
Copyright © 2011-2022 走看看