`
eyejava
  • 浏览: 1267027 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mercurial使用简单介绍

阅读更多

概述


  • Mercurial可以使异地开发进行统一的版本管理,比如一个项目有一部分人在银行内部开发无法用外网,另一部分人在公司开发,这两部分人需要一个统一的版本管理工具,mercurial这时候可以发挥作用
  • mercurial 同Subversion很多命令相同,所以学习曲线不陡峭,可以比较快的掌握使用。add,commit,branch,tag等命令都是相似的操作方 式。mercurial也是管理一个全局的版本号,同时每个版本号有一个唯一的ID识别,版本号只是顺序号,不同版本库的相同的版本号并没有可比较的意 义,版本ID相同才说明这个版本是相同的
  • mercurial对linux,windows,mac平台都有比较好的支持。在windows平台上有基于命令行的mercurial.exe和基于图形界面的TortoiseHg
  • DVCS同集中式版本管理的最大不同点是,每个人机器上都有一个版本库,一个版本库如同一个svn branch,所以如何使用branch,并进行合理的合并,同其他人的版本合并也变得异常重要,不然会形成非常的heads,将会形成混乱。
  • mercurial通过导出changeset到文件中,可以方便的通过邮件附件的形式来发送到另外一个项目组成员,继而进行导入,从而实现版本同步
  • 在当前最火的两个DVCS中,Google code选择了Mercurial,但Git有它的一些优势,比如版本库存储、多个parents方便merge

基本使用


以下使用大多基于命令行形式,版本是1.2.11

  • 因为本地即是版本库的服务端也是版本库的客户端,所以首先得区分好版本库和工作目录两个概念,版本库存放了所有的版本,工作目录只是某个特定的版本,这个概念同svn是一致的,只是svn的版本库不在本地,而在集中的一台服务器上。
  • hg init 创建新仓库,版本库的文件放在一个.hg的文件夹下面
  • hg add 添加未版本化的文件
  • hg commit 提交修改,使用-m 填写comments,同svn是一样的
  • hg tip 查看当前版本库的最新版本,注意:不是当前工作目录的最新版本。tip是版本库最新版本的意思
  • hg parents 查看当前工作目录的最新版本,如果这个版本有多个parent,会显示出来,如果没有则不显示。parent是指某个版本的前一个版本,如果某个版本通过 两个版本merge而来,则会出现多个parents。mercurial还不支持超过两个的parents,也就是说只能将版本两个两个的合并,合并3 个版本需要操作2次,合并4个版本需要操作3次,依次类推,如果碰到8个版本需要合并,则需要合并7次...
  • hg clone 克隆一个版本库到本地,当项目开始的时候,建议在一台电脑上init项目后,然后大家从他那clone出来,而不是各自init。
  • hg pull 从另一个版本库更新版本到本地
  • hg push 将本地版本库更新到其他版本库中,其他版本库需要开通ssh服务,Windows下需要cygwin来启动ssh,linux下用openssh实现。Windows客户端连接ssh服务器时,需要在mercurial.ini的ui段配置,如下
    [ui]
    ssh =  "C:\Program Files\TortoiseHg\TortoisePlink.exe"
    
     
    

    putty.exe 无法配合hg使用。
    TortoisePlink.exe对于 ssh://xx/ 之后的路径需要再加一个"/" 以示根路径,如下:
    ssh://192.168.107.129//home/arthur/hg/hello

  • hg incoming 将本地版本库同其他版本库进行比较,看看有哪些changeset在其他版本库中可以pull过来
  • hg outgoing 将本地版本库同其他版本库进行比较,看看有哪些changeset可以push到其他版本库中
  • hg update 更新工作目录,默认参数是tip,参数也可以是版本号、tag名字、branch名字。svn中的切换branch/tag通过这个命令来实现
  • hg tag 制定一个永久的版本号,tag存放在.hgtags文件中,这个文件也需要版本化
  • hg branch 显示当前branch,或者新建一个branch,默认的branch名字是default。
  • hg diff 对比版本间的差异
  • hg merge 合并版本到当前工作目录,hg pull之后会提示hg update,hg update之后如果提示hg merge,这时候的merge是在最新版本的基础上进行的merge,merge之后所作的修改需要通过commit来生成新的版本号。
    • 合并branch : hg merge branchname ,先确认hg branch是什么再执行这个命令。
      当一个branch的历史使命完成的时候,这时候需要决定是基于这个branch新开一个branch,还是在某个之前的版本开立branch. default是一个没有创立任何branch时的默认branch名字。
      如果希望继续工作在default branch下,则需要先hg update default,然后再考虑需要合并哪些版本到default里面,之后就可以在default下一直工作了。
      对于开了多个branch需要合并到default时,需要一个个branch来合并,诸如这样:
      hg merge foo
      hg merge bar
      hg ci -m "merge foo and bar to default
      
      "
      
      
      
    • 在windows下,如果安装了beyond compare,会自动被调用出来。
      显示三个窗口:本地文件、基文件((在分支分开前的最后一个版本))、其他文件(外来的文件)。这种合并模式同svn是一样的。
      merge做完之后,需要hg ci提交修改,这时可以看到tip 信息中的parent有两个,表明是从两个版本中merge过来的。
      beyond compare对于冲突有三个基本选项:Take left, take center, take right,分别对应以上三个文件的内容。还有其他几个选项也很容易明白。有冲突时还可能需要手工输入内容。
      另外,如果我们没有安装图形合并程序, 我们就会开启文本编辑器来访问需要合并的文件。用手工来做这些事情是非常容易出错并且繁琐的。 最好是退出编辑器并用hg rollback指令来清除["Pull"]带来的改变,然后安装合并程序,再做一次。
  • hg heads head指的是没有儿子chaneset的changeset,也就是版本树的叶子节点,多个叶子节点可以进行合并为一个叶子, branch heads指那些给了tag但还没有儿子changeset的changeset。 用hg heads显示当前库所有的heads , 如果存在多个heads则说明有多条并行开发的路径,这时需要考虑是否需要合并。
  • hg serve -n "hellohg" -p 80 运行网络服务。之后可以通过hg pull http://localhost/hellohg 来下载这个版本库。这是一个临时性的便捷的提供pull版本库服务的方法
  • hg export 导出changeset,默认导出tip,需要用重定向来导出到文件中,之后这个文件可以通过邮件附件发出,这样可以实现无网络连接状态下的版本同步
  • hg import 导入changeset
3
0
分享到:
评论

相关推荐

    Mercurial的简单入门

    通过以上的介绍,我们了解到Mercurial的基本使用方法,包括在不同操作系统上的安装过程、基本操作命令、查看仓库历史、恢复与撤销操作以及标记版本等功能。Mercurial的强大功能使其成为开发团队中不可或缺的工具,...

    mercurial hg 扩展

    此外,文章还介绍了高级接口的使用,即直接在代码中调用Mercurial命令,每个命令对应于`mercurial.commands`模块中的一个函数。调用这些函数时,应遵循特定的签名格式。 总之,Mercurial的扩展机制是通过Python脚本...

    分布式版本控制Tortoisehg使用的简单说明

    **Tortoisehg**是一款基于Mercurial的图形化分布式版本控制工具,它为用户提供了一个简单直观的操作界面,使得即使是初学者也能快速上手。Mercurial是一种强大的分布式版本控制系统,被广泛应用于各种软件开发场景中...

    Mercuial for mac os x 10.6

    本文将详细介绍Mercurial在Mac OS X 10.6环境下的安装、使用及其核心概念。 一、Mercurial简介 Mercurial是一个开放源码的版本控制系统,由Python语言编写,支持跨平台操作。它的设计目标是简单易用,同时保持高效...

    SDL:SDL的自动非官方镜像,它将更改从Mercurial转换为Git

    Mercurial是一款分布式版本控制系统,简单易用,适合大型项目。而Git则更为流行,拥有强大的分支管理、合并工具和一个庞大的开发者社区。Git的社区支持和丰富的生态系统使得很多项目选择从Mercurial迁移过来。 **从...

    智能web的api下载操作帮助

    下面将详细介绍使用PHP Phar文件安装Composer的方法。 使用PHP Phar文件安装Composer 使用PHP Phar文件安装Composer非常简单,只需要下载Composer的Phar文件,然后使用PHP命令行工具运行该文件即可。例如,可以...

    TortoiseHg-4.9.1-64bit

    本文将详细介绍TortoiseHg 4.9.1这一64位版本的特点及其在Mercurial版本控制中的应用。 首先,Mercurial(HG)是分布式版本控制系统的一员,它与Git类似,允许开发者在本地进行完整的版本控制操作,包括提交、分支...

    ubuntu下搭建Go语言(golang)环境

    Go语言专门针对 多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 还是我自己的电脑,我自己安装的是ubuntu 12.04版本的,直接介绍安装吧!其实...

    SCM Manager 简体中文版

    相对于其他源码管理服务器,它具有如下优势(基于官方介绍): 安装简单 无需手动配置,从web界面即可进行配置 无需任何WEB服务器和数据库支持 支持用户、用户组和权限控制 脱离第三方软件支持Git、Mercurial、HG和...

    SourceTree

    作为Git和Mercurial的客户端,它为开发者提供了一个直观易用的图形用户界面,使得版本控制操作变得简单而高效。 1. **Git支持** - **Git基础概念**:Git是一种分布式版本控制系统,用于追踪对文件和目录的修改,...

    TortoiseHg帮助指南

    《TortoiseHg帮助指南》详细介绍了如何在Windows和Linux客户端上安装和使用TortoiseHg。文档的受众包括但不限于对版本控制系统感兴趣的初学者,以及希望深入学习TortoiseHg高级功能的高级用户。帮助指南中使用了一些...

    GO语言文档(中文版)

    使用Mercurial更新源码后,重新编译Go工具链即可升级到新版本。 3.9. 社区资源 Go语言拥有活跃的社区,包括邮件列表、论坛、Stack Overflow等平台,可以在遇到问题时寻求帮助。 3.10. 环境变量 了解并正确设置Go...

    SourceTreeSetup-2.3.1.0

    **SourceTree介绍** SourceTree是一款由Atlassian公司开发的免费的Git和Mercurial桌面客户端,它提供了一个直观且用户友好的图形界面,使得开发者在处理版本控制系统时能更加便捷。SourceTree支持Windows和Mac OS...

    SourceTree_v2.0.7

    Mercurial的设计理念更注重简单性和易用性,SourceTree的集成使得Mercurial用户也能享受图形化的操作界面。 3. **源码管理操作**:SourceTree_v2.0.7提供了丰富的Git和Mercurial操作,包括克隆、拉取、推送、提交、...

    Git&GitHub;介绍

    ### Git与GitHub介绍 #### 一、版本控制工具的核心功能 版本控制工具是软件开发过程中不可或缺的一部分,它帮助团队高效地管理和追踪项目的变更历史。以下是此类工具应当具备的关键功能: 1. **协同修改**:允许...

    SmartGit中文使用1

    通过以上分析可以看出,SmartGit不仅提供了友好的图形界面来帮助开发者更好地理解和使用Git,而且还兼容其他版本控制系统,如Mercurial和SVN。无论是初学者还是经验丰富的开发者都能从中受益匪浅。

    SVN,HG,GIT命令对照.pdf

    关于启动服务器的命令,SVN使用svnserve -d 命令来启动服务,Mercurial使用hg serve -p 来启动一个简单的HTTP服务,而GIT使用git daemon --base-path 选项配合 --export-all 来启动GIT守护进程。 需要注意的是,...

Global site tag (gtag.js) - Google Analytics