目录

概述

基本使用

Windows平台安装使用

Linux 平台安装和使用


ercurial分支介绍:https://www.mercurial-scm.org/wiki/Branch

Mercurial初学指南:https://www.mercurial-scm.org/wiki/BeginnersGuides

Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

概述


  • 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

Windows平台安装使用

参考 WIndows版本介绍:https://mercurial.selenic.com/wiki/WindowsInstall

Linux 平台安装和使用

pip install mercurial  # 通过 pip 安装 Mercurialhg --version  # 查看 Mercurial 版本hg clone http://hg.openjdk.java.net/jdk8/jdk8 openjdk8  # 克隆远程仓库hg log  # 查看仓库历史hg pull  # 拉取代码hg status  # 查看仓库状态

代码托管示例:https://bitbucket.org/luciad/webp-imageio/src/default/

Mercurial hg轻量级分布式版本控制系统相关推荐

  1. 分布式版本控制系统Mercurial(一):Mercurial基本功能介绍

    版本控制系统(Version Control System / Revision Control System,或者叫做源码控制系统Source Control System,以下简称VCS),是软件 ...

  2. 分布式版本控制系统入门

    简介 在过去几年,对于分布式版本控制可以给开发过程提供的益处有许多争论.最近,分布式工具已经很成熟了.尽管分布式工具的一些优点最初可能不明显,但是从长期来看,它们提供的灵活性是非常有意义的.阅读完本文 ...

  3. 【git】—集中式与分布式版本控制系统

    [前言] 大家都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了,之前的linux代码是由Linus本人通过手工方式合并代码,后来为了切 ...

  4. git(2)---git 分布式版本控制系统

    集中式vs分布式 Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央服务 ...

  5. 集中式和分布式版本控制系统的区别

    集中式: 先说集中式版本控制系统.简单的说就是,版本库是集中的存放于中央服务器的.干活的时候,先要去中央服务器里领取最新的版本,然后在开始干活.干完活在将自己的版本上传到中央服务器. 就好比要改一本书 ...

  6. Git分布式版本控制系统(上)

    Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  7. Git分布式版本控制系统

    Git分布式版本控制系统 git remote -v 查看仓库 一 企业高效持续集成平台场景介绍: 二,GIT分布式版本控制系统: 2.1 Git简介: 2.1.1 git是什么? Git在Wikip ...

  8. 分布式版本控制系统 Git 教程

    简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...

  9. 使用Git分布式版本控制系统

    GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理 ...

最新文章

  1. oracle之alter学习笔记
  2. Oracle HA 之 Server Pool 实战
  3. 移动端 fixed 固定按钮在屏幕下方,然后按钮被键盘顶上来...顶上来了有没有~
  4. 知识库如何跟其他业务系统结合
  5. Leetcode 440.字典序第k小的数字
  6. python3----字典
  7. 盘点2021AI Conference Deadlines及论文写作突击要点
  8. cocos2d-x之物理世界(创建物理世界)
  9. 《JavaScript 学习指南》
  10. 渗透测试-postmessage xss
  11. java dms项目流程_Xinco DMS
  12. 锂电池电池管理系统 中颖SH367309保护板方案
  13. bio-linux软件包教程,biolinux包含软件
  14. 同步练习(Java SE(九))补充
  15. 计算机系统图标文件,电脑软件的图标图片文件都集中在哪个文件夹??
  16. android 日历动态图标,android 日历图标显示星期
  17. python简易版成绩管理系统_Python学生成绩管理系统简洁版
  18. 多硬盘分区管理fdisk-张丹
  19. 解读谷歌财报:17亿美元罚款致利润缩减,流量成本激增已迎来下行拐点
  20. c语言单链表设计报告,单链表实验报告

热门文章

  1. Safari浏览器无法打开,如何解决Safari在Big Sur中崩溃的情况
  2. WPS另存为csv表格
  3. 直播系统压测应该怎么做?
  4. range()和np.arange()的区别
  5. js数组对象及字符串对象,完整详细版
  6. 数据分析用sql还是mysql_学习使用SQL进行数据分析
  7. 第三章:RocketMQ集群与搭建
  8. iPhone制作iMovie基本操作
  9. 有什么软件可以学计算机二级,有没有学习计算机二级以及英语四级的软件推荐?...
  10. nodejs实现抖音自动关注小姐姐小哥哥神器