许久没有发博客了,最近的项目经过调研和代码安全性考虑准备使用Mercurial,从很多网站的调研数据来看Mercurial在Windows平台开发较Git性能上有非常大的优越性(这里主要指基于HTTP的传输发,非本地版本控制),基于python的Mercurial给跨平台和网络支持带来了很多便利,而Git比Mercurial有更多依赖Unix的基因。
之前试着使用过Git和HG,但是都是为了看开源代码,现在看起来有种菜鸟没见过世面的感觉。今天再次使用了HG,看了一些中文的使用入门和介绍,对HG有了初步的认识。但是感觉对分布式版本控制的一些理念仍有些不明了,决定花点时间仔细研读一下。这里把看到一些关于思想比较有价值的东西在此分享。(需要注意的是有些Git的思想和Mercurial是不太相同,使用Git时不能完全照搬)
1. 从SVN到分布式版本管理工具
所谓分布式,就是指没有一个所谓的集中的中心(central)库,这个库一般由svn server(svn),vss administrator(vss)控制,而Mercurial就没有这样的一个库,所以使用版本控制的时候甚至都不需要一个administrator和server,本地直接建库,直接就使用,任何一个库都可以作为中心库,每个库在Mercurial看来都是平等的。当然,实际使用的时候,可以人为的去指定一个中心库以作为发布,
首先,分布式最大的好处就是离线工作,不仅意味着可以不联网就享受版本控制的好处,并且也意味着普通的提交速度也要快的多,而且,以此带来的巨大灵活性甚至能改变你的工作方式,因为以前集中式的版本控制系统,每次提交都会影响到他人,以至于不能提交未经测试的版本,而使用分布式的版本控制系统时,你可以随时随地的本地提交,安全的保护自己的工作成果,以防意外,也能随时随地的本地clone,本地分支,本地就是一套完整的版本控制系统!直到修改到最终版本,然后才push(相当于集中式版本控制的commit)到真正的一个公用库上去。(这是我对分布式的优势的第一印象,所以感觉特别同意这个观点)
其次,对于个人开发者来说,带来了太多方便,自己一个人不必自己建立一个SVN服务器,抑或自己不断的保存副本完成比较畸形的版本控制。HG只需要加你了自己的本地库,哪天有了新的成员或组建了团队只需要share到服务器就OK了,这对于本地的个人开发者实在太便利了,迫不及待想把以前的项目都建立成本地库,以前这个过程中实在有太多的不便利。
2.
Mercurial的问题
分布式的版本控制系统还是有一定缺陷的,比如权限控制的问题,这点可能因为Mercurial的用户群主要在于开源世界,开始没有太过重视,但随着Mercurial的迅速发展和强大的Google的支持这些问题越来做的越完善了。然后Mercurial相比Git还有个缺点,那就是分支的时候不能对单独的子目录进行,一次clone就是一个工程,这样希望在一个大工程中对一个小项目进行分支,会比较麻烦,这点也算是比较大的缺点了。
但是,上述缺点都不是分布式版本控制固有的,仅仅是目前Mercurial的实现的问题,相对于带来的便利都不能算作问题。
且这些问题都只是现在我看到的文章的介绍,是否现在很好的解决还需要进一步使用和发现。
3. 相对SVN和Git的两个区别(此部分在之后的深入阅读和理解后再说,这里仅仅记录)
-->Mercurial是基于changesets管理的版本控制系统与git基于内容管理(snapshot)管理的方式不同。在Mercurial中,一个系统就是通过一个一个changesets累加起来的。
-->Mercurial要求Commit必须填写message,没有的话是会终止提交的,这也体现了一种好的软件版本管理哲学,每次提交都强制性的要求有说明的。之前粤哥说过的IBM关于通过SVN的Log解决问题的例子一直铭记于心,之后每次提交填写清晰的Log也成了一种习惯,但是有时候如果你不是在公司很难完全要求别人也做同样的事情,所以这一点真的非常好。这一点都足以让我放弃SVN了。
分享到:
相关推荐
离线安装包,测试可用
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
安装完成后,Mercurial的命令行工具(如`hg`)就可以在您的系统中使用了,你可以用它来管理你的项目,进行提交、更新、分支、合并等一系列版本控制操作。 在实际使用中,了解Mercurial的基本命令是至关重要的,例如...
emacs-mercurial-2.6.2-11.el7.x86_64.rpm
这个库的命名暗示了它可能与Mercurial——一个分布式版本控制系统有关,并且可能着重于处理远程操作。 Mercurial是一个强大的版本控制工具,类似于Git,它允许开发者追踪代码的修改历史,协同工作,并管理项目的...
这些扩展通常以Python模块的形式存在,位于Mercurial的`extensions`目录下,或者在`~/.hgrc`(Unix系统)或`%USERPROFILE%\Mercurial.ini`(Windows)配置文件中被引用。扩展通过在`[extensions]`部分添加扩展名来...
而“git 分布式 mercurial”的标签,则将Mercurial与另一种著名的DVCS——Git进行了关联,暗示我们将对比两者之间的异同。 Mercurial的核心概念在于其分布式特性。与集中式的版本控制系统(如CVS或SVN)不同,每个...
**分布式版本控制系统Mercurial** Mercurial是一种强大的开源分布式版本控制系统,它的设计目标是简单易用、高效且可扩展。Mercurial的核心是基于文件的版本管理,它允许开发人员在本地工作,并通过网络与其他用户...
1. **unins000.dat、unins000.exe**:这是卸载程序的相关文件,用于在不再需要Mercurial时从系统中移除。 2. **python27.dll**:这是Python运行库的一部分,Mercurial基于Python构建,因此这个文件是必需的。 3. **...
《Python库Mercurial详解——基于6.0.1版本》 Mercurial,一个强大的分布式版本控制系统,是Python开发的重要工具之一。在软件开发过程中,版本控制是必不可少的环节,它能帮助开发者追踪代码的变化,协同工作,...
资源分类:Python库 所属语言:Python 资源全名:mercurial_extension_utils-0.11.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
mercurial-3.7.1-x86.msi 最新的windows安装包,
《Mercurial 参考手册》是一本详细阐述Mercurial版本控制系统知识的资源,适合开发者和IT专业人员学习和参考。Mercurial是一种分布式版本控制系统,它允许用户跟踪和管理代码更改,便于团队协作和项目管理。在这个...
Mercurial和TortoiseHg是一套强大的版本控制系统,尤其适合那些希望管理代码和项目变更的用户。Mercurial,常简称为Hg,是一个分布式版本控制系统,它允许开发者在本地存储完整的代码历史,无需中央服务器。Tortoise...
在windows 7 64位 环境下使用nginx的nginx-http-flv-module搭建flv视频流播放所需要的资源。
在本篇文章中,我们将深入探讨如何部署Mercurial服务器服务,以便团队成员可以安全地共享和协作代码。 首先,我们需要了解分布式版本控制系统的概念。与集中式版本控制系统(如SVN)不同,分布式系统中的每个工作...
Mercurial在IT界是跨平台的分布式版本控制软件,主要由Python语言实现。主要是命令行程序操作,图像化呢也有。由于该软件命名中文翻译是——水银,为了输入命令时方便,用元素命名Hg来作为调用程序的关键字。