分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

分布式的,新一代版本控制系统Mercurial的介绍及简要入门

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie

讨论新闻组及文件

在经历了《版本控制系统(RCS)的选择与比较》后,选择了Mercurial下面给大家介绍一下Mercurial。

一、   提要

本文以假设你已经了解基本的版本控制系统知识,知道诸如库,历史,提交等常见的概念,本文简要的说明了在Windows/Linux下的可用安装版本,在Google Code上建库,管理,修改,提交,取回的过程,基本上仅是平时开发需要的最基础的一些功能。(连merge都没有说)因为要掌握任何可用的版本管理系统的全部功能都是一个复杂的系统过程,本文并不期望能包含全部内容,仅仅希望作为一个对Mercurial的介绍及入门引导,并不对基本的版本控制概念进行过多的描述。想要进一步学习Mercurial的可以参考最后的参考资料,个人比较推荐用《Mercurial 使用教程》入门,然后需要的时候可以查看《Mercurial: The Definitive Guide》。

二、   介绍

Mercurial与一般传统的版本控制系统的最大区别在于分布式的概念。所谓分布式,就是指没有一个所谓的集中的中心(central)库,这个库一般由svn server(svn),vss administrator(vss)控制,而Mercurial就没有这样的一个库,所以使用版本控制的时候甚至都不需要一个administrator和server,本地直接建库,直接就使用,任何一个库都可以作为中心库,每个库在Mercurial看来都是平等的。当然,实际使用的时候,可以人为的去指定一个中心库以作为发布,但是,这里强调的是Mercurial本身不关心这个,对它来说都是一样的。Linus他在演讲的时候多次说集中式的版本控制系统没有前途,因此,Subversion的开发者想要开发一个更好的CVS其实是脑子出了毛病-_-!呵呵,实际上,他虽然说得比较过,但是分布式的版本控制的确是比集中式有很多优点。

首先,分布式最大的好处就是离线工作,不仅意味着可以不联网就享受版本控制的好处,并且也意味着普通的提交速度也要快的多,而且,以此带来的巨大灵活性甚至能改变你的工作方式,因为以前集中式的版本控制系统,每次提交都会影响到他人,以至于不能提交未经测试的版本,而使用分布式的版本控制系统时,你可以随时随地的本地提交,安全的保护自己的工作成果,以防意外,也能随时随地的本地clone,本地分支,本地就是一套完整的版本控制系统!直到修改到最终版本,然后才push(相当于集中式版本控制的commit)到真正的一个公用库上去。想到那当年作为一个新员工,每次提交代码都需要请示总监的日子。。。。那是多么痛苦的啊。。。。

其次,对于个人开发者来说,使用集中式版本控制系统的时候有没有想过,仅仅是一个人工作,为啥偏要建立一个中心库,然后每次将自己的代码提交到那上面去啊?自己本地一个副本,库还得有一个副本,也不环保嘛。呵呵,甚至,我以前还为此专门架设了自己的VSS服务和SVN服务器-_-!而用分布式的版本控制系统就没有那么麻烦了,本地建库,直接使用就好了^^只有用过后才知道原来一切都那么简单。。。。。。。。。。。。。并且,当你哪天想要将工作成果share出去的时候,也不麻烦,还是一条普通的push命令,就像远方的服务器一直搭建好了一样。

但是,其实目前来说,分布式的版本控制系统还是有一定缺陷的,比如权限控制的问题,这点可能因为Mercurial的用户群主要在于开源世界,所以没有太过重视,实际上对企业开发可能会比较重要,相对来说SVN,特别是VSS就要好的多。但是,事实上通过外部的手段进行权限的控制还是可行的(比如ssh的登录),只不过相对来说会复杂一点,这也算是个小缺陷了(可大可小)。然后Mercurial相比Git还有个缺点,那就是分支的时候不能对单独的子目录进行,一次clone就是一个工程,这样希望在一个大工程中对一个小项目进行分支,会比较麻烦,这点也算是比较大的缺点了,但是,上述缺点都不是分布式版本控制固有的,仅仅是目前Mercurial的实现的问题,相对来说,分布式和集中式这样工作方式上的区别才是最主要的,毕竟Mercurial还年轻,希望Mercurial将来的实现会更好^^

三、   安装

1.      Windows

Windows可使用的版本有3种,首先是官方的版本:http://mercurial.berkwood.com/ ,最新版是1.3.1:

2009-08-08: Mercurial 1.3.1 - Release version

其次是可爱的乌龟,不过不叫TortoiseMercurial,而是Tortoisehg(因为Mercurial在命令行的命令是HG,不会有人喜欢Mercurial这样长的命令吧-_-!),在http://bitbucket.org/tortoisehg/stable/wiki/download,找到下载地址,最新版是0.8.2 ,此外,此网址还有个中文的注册表文件zh_CN可以下,下载后直接打开,可以使的右键菜单的语言编程中文(但是设置中的语言还是E文,为了统一,建议还是用E文的比较好) (BTW:乌龟真是版本控制之王啊。。。。。。。。。从CVS到SVN到Mercurial到Git是无所不包啊。。。。。。)

最后,假如仅仅是使用VS工作的话,也有VS的集成版本,叫Mercurial SCC Package,在http://www.newsupaplex.pp.ru/hgscc_news_eng.html有最新的版本下载。

要说明的是,Mercurial遵循的是典型的Unix风格,即自己只做命令行功能,图形界面留给了别人做,所以官方版本仅仅只有命令行功能,TortoiseHg是在Windows下较好的一种,这里向大家推荐一下。实际上安装完TortoiseHg后,已经包含了完整的官方版本,毕竟,TortoiseHg仅仅是Mercurial的一个GUI前端而已。下载后,安装的流程就不多说了,无非就是下一步。。。。不会的话也不会想要使用这个软件了。(安装后,想使用中文的就再打开上面的中文菜单注册表文件。)      再然后,就可以在右键中看到菜单。

2.      Linux

对于官方版本来说,Ubuntu下利用

apt-get install mercurial

就行

Redhat就用yum吧,都有可用版本。不过在我的kubuntu9.04上安装的是1.01版本,实在太老了。

而TortoiseHg在Linux也可用(事实上,仔细观察一下Windows版本的TortoiseHg就知道,其实它本质上是个GTK程序-_-!)

在http://bitbucket.org/tortoisehg/stable/wiki/download还是能找到下载的地方:

Linux

Debian packages are coming soon.

Ubuntu packages can be found at: https://launchpad.net/~maxb/+archive/ppa or https://launchpad.net/~tortoisehg-ppa

Fedora RPM packages:

  • 0.8.2 - x86
  • nautilus 0.8.2 - x86
  • 0.8.2 - x64
  • nautilus 0.8.2 - x64

If no package yet exists for your platform, then use the source install method described on the hgtk page. Note that we do not suggest that you run from a tarball, even though we make one available for download. We prefer you use a local clone of TortoiseHg instead. If you do decide to use a tarball, you'll want to delete thgutil/config.py* to remove the hard-coded paths.

To use the settings tool on Linux, you must have http://code.google.com/p/iniparse/ installed.

不翻译了,这里说明一下。。。。。launchpad是出品ubuntu的公司建立的一个源代码host,上述链接上有介绍使用方法,基本上如同普通的程序一样,通过apt-get获取key,然后修改apt-get在/etc/apt/下的source.list,添加进新的ppa的源(有3个),然后通过apt-get update更新一下源的信息,就可以直接通过apt-get install tortoisehg来下载了,这时下载的mercurial会是最新的1.3版本,而不是原来的1.01老版了。

我用的是kubuntu,没有用tortoisehg,因为那样要安装一整套的gtk库,用gnome的人就幸福了^^唉。。。这也是当年选择了Qt的后遗症啊。。。。。。。。。。

3.      Eclipse

Eclipse由于是Windows,Linux通用的,所谓单独放在这里了,呵呵,JAVA程序的这个优点还是挺吸引人的,说到这里感叹一下,JAVA程序员哪能理解学习了CreateProcess然后重新学习fork,execxxx,学习了CreateThread,然后学习pthread_create的痛苦啊。。。。。呵呵,这些都是题外话。另外,eclipse插件的管理,你得首先安装对应的原始官方版本。。。

Eclipse插件:http://www.vectrace.com/mercurialeclipse/

4.      检验安装

首先检验已经安装成功,可以查看一下官方的版本

Windows下:

E:/work>hg version

Mercurial Distributed SCM (version 1.3.1+1444a42f6052)

Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> and others

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Linux下:

jtianling@jtianling-laptop:~$ hg version

分布式软件配置管理工具 - 水银 (版本 1.3.1)

版权所有 (C) 2005-2009 Matt Mackall <mpm@selenic.com> 和其他人。

这是自由软件,具体参见版权条款。这里没有任何担保,甚至没有适合

特定目的的隐含的担保。

呵呵,在通过ppa那个链接安装了新版后,竟然版权信息是中文的。。。。并且,Mercurial翻译成了水银,这点比较让人吐血。事实上Mercurial表示墨丘利。。。。。也就是希腊神话中的赫尔墨斯(Hermes)。。。。。。

见WIKI的说明:

墨丘利(Mercurius)是罗马神话中为众神传递信息的使者,相对应于希腊神话的赫耳墨斯(Hermes)。他的形象一般是头戴一顶插有双翅的帽子,脚穿飞行鞋,手握魔杖,行走如飞。墨丘利是裘比特和玛亚的儿子,是医药、旅行者、商人和小偷的保护神,西方药店经常用他的缠绕两条蛇的手杖作为标志。

此外,由于水星在天上运行的速度很快,所以亦用了他的名字而命名。

怎么说。。。。。。。。。。。我都觉得Matt Mackall原意是指墨丘利吧-_-!又扯远了。。。。。

说明安装成功。。。。。。。。。。。。。

四、   简要使用说明

因为在Windows下和在Linux下使用Mercurial是类似的(命令行嘛,能差别大到哪去),这里以Windows下的使用为例,之所以使用Windows为例而不是用Linux因为我用的是Word2007编辑所以复制结果比较方便,之所以用Word2007是因为拷贝到IE中的CSDN blog编辑框中比较方便,之所以用IE是因为CSDN blog对Firefox的支持不好。。。。。。。。这里抱怨一下-_*!。。。。。

下面的小标题括号中的英文即是对应的Mercurial命令。

1.      帮助(help)

从上面的检验安装方法可以看出来,Mercurial的命令是Hg。

首先,因为我不能将所有的命令都讲完,所以先告诉大家怎么用帮助^^,我果然很取巧-_-!

Mercurial有内建的帮助系统,参数是help,help后还可以以需要查询的命令为参数。

比如:

E:/work>hg help init

hg init [-e CMD] [--remotecmd CMD] [DEST]

create a new repository in the given directory

Initialize a new repository in the given directory. If the given

directory does not exist, it will be created.

If no directory is given, the current directory is used.

It is possible to specify an ssh:// URL as the destination.

See 'hg help urls' for more information.

options:

-e --ssh        specify ssh command to use

--remotecmd  specify hg command to run on the remote side

use "hg -v help init" to show global options

2.      建库(init)

上面的帮助内容,懂E文的的就看懂了,init就是Mercurial的建库命令,使用方法如此简单。比如我希望在E:/Work/Hello下建立一个我自己的库,只需要在e:/Work/Hello目录输入hg init如下:

分布式的,新一代版本控制系统Mercurial的介绍及简要入门相关推荐

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

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

  2. 新一代版本控制系统Git,你真的掌握了吗?

    Spring Cloud 2.x之整合工作流Activiti IT工作?咋样的IT工作才是一个好工作? Java开发5年,如何继续提升技术实力? Git 是目前最流行的版本控制系统,在它的基础之上, ...

  3. mercurial使用_DBA对Mercurial的介绍–什么时候以及为什么我们应该使用版本控制

    mercurial使用 介绍 (Introduction) As DBA's we usually have a lot of utility scripts sitting around that ...

  4. Mercurial hg轻量级分布式版本控制系统

    目录 概述 基本使用 Windows平台安装使用 Linux 平台安装和使用 ercurial分支介绍:https://www.mercurial-scm.org/wiki/Branch Mercur ...

  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——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)...

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

最新文章

  1. oracle编程艺术在线,oracle编程艺术笔记-1
  2. 叙述无保密机制的rsa签名过程_安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?...
  3. php如何获取上传文件的后缀?
  4. Ubuntu 安装Jdk(apt-get)
  5. 洛谷P1605:迷宫(DFS)
  6. python实战学习之matplotlib绘图续
  7. 将搜索二叉树转换为链表_将给定的二叉树转换为双链表(DLL)
  8. Java 动态代理机制详解
  9. python里怎么读取文件-python如何读取文件的数据
  10. 1.线性回归、梯度下降法、岭回归、LASSO回归、最小二乘法
  11. 最最简单的几个Mac终端命令
  12. 苹果屏幕录制怎么没有声音_苹果6plus没有声音怎么回事
  13. 别学英语了!微软给PPT和Skype新加的这个功能,让你和老外从此交流无障碍
  14. Synology-群晖(一)移动大内网使用 IPv6 + DDNS 实现公网访问
  15. ios绘图_使用Pencilkit轻松将绘图功能添加到ios应用
  16. 进击的Android之manifests
  17. 顶级科学家是哲学家,顶级investor是哲学家
  18. 解决32G或64G的SD卡无法使用NOOBS安装树莓派的问题
  19. 理解华为交换机的三种端口模式
  20. Linux gzip gunzip(压缩与解压缩)命令

热门文章

  1. 如何把PDF转换成图片格式
  2. 在VMware中给win10/win7虚拟机配置静态IP地址(保姆级教学,全是干货)
  3. 数字图像处理复习题(自拟)
  4. 主播直播和平精英公然使用外挂,这种行为你怎么看?
  5. 移动、联通低头了?取消达量限速推出新优惠政策,网友:怕电信了
  6. php notepad 格式化,notepad怎么转换xml格式化
  7. 《王者荣耀》马超上线时间公开 马超技能玩法一览
  8. 2013款捷达1.6L自动挡 勤恳务实的老好人
  9. 会计基础(1) - 总论
  10. html标签验证百度搜索,如何验证百度站长平台(百度搜索资源平台)?