Mercurial

Mercurial是跨平台的分布式版本控制软件，主要由Python语言实现，但也包含用C语言实现的二进制比较工具。Mercurial一开始的主要运行平台是Linux，现在Mercurial已经移植到Windows、Mac OS X和大多数的类Unix系统中。Mercurial主要由命令行程序组成，现在也有了图形用户界面。对Mercurial的所有操作都由用不同的关键字作为参数调用程序“hg”来实现，Hg是参考水银的化学符号而取的名字。

Mercurial的主要设计目标包括高性能、可扩展性、分散性、完全分布式合作开发、能同时高效地处理纯文本和二进制文件，以及分支和合并功能，以此同时保持系统的简洁性Matt Mackall, Towards a Better SCM: Revlog and Mercurial , Ottawa Linux Symposium Proceedings, 2006.。Mercurial也包括一个集成的Web界面。

Mercurial的创建者和主要开发人员是Matt Mackal。其源代码采用GNU通用公共许可证第二版为授权，确保了Mercurial是一个自由软件。

 技术细节 
Mercurial采用SHA-1散列算法来识别修订版本。Mercurial使用一个基于HTTP的协议来接入网络中的版本库，旨在减少往返的提交、连接数和数据传输。Mercurial也可以工作在ssh环境下，其协议和基于HTTP的协议非常相似。

 文档 
Bryan O'Sullivan已写作了一个全面的参考手册：Mercurial：权威指南。该手册根据开放出版许可协议免费提供。

 历史 
Mackall在2005年4月19日第一次发布了Mercurial。其动机是当月Bitmover公司宣布撤销其免费版本的BitKeeper。

2005年时BitKeeper已经被用于Linux内核的项目版本控制。Mackall决定为Linux内核开发写一个分布式的版本控制软件来替代BitKeeper。在该项目启动数天前，Linus Torvalds基於類似的目的開始了另一個現在相當知名的版本控制軟體Git。

Linux内核开发项目决定使用Git而不是Mercurial，但Mercurial也使用于在很多其他的项目中（见下文）。

 相关软件 
Mercurial图形用户界面有：Hgk（Tcl／Tk）。该程序作为Mercurial的插件而开发，现在被直接包含于正式版本中。界面可以通过命令命令'hg view'来调用（如果安装了该扩展的话）。hgk最初来源于名为gitk的类似工具。hgk有一个名为hgview 是纯Python编写的替代软件，同时提供GTK和QT界面。
合并用的工具包括（h）gct(Qt)和Meld''。
转换插件可以将CVS、、Git、GNU arch、Monotone、、GNU Bazaar和Subversion的版本库转换为Mercurial的版本库。
从第6版Mercurial开始支持NetBeans。
TortoiseHg提供了一个面向Windows的基于右键菜单的友好界面，也用于GNOME的Nautilus文件管理器。

 其他 
 代码托管 
以下网站提供免费的Mercurial版本库托管：
 Bitbucket
 Google Code
 JavaForge   
 Project Kenai by Sun Microsystems
 SourceForge
 GNU Savannah
 Alioth by Debian
 BerliOS
 在Mercurial wiki中列出的其他网站
 CodePlex 

 采用Mercurial的项目 
这些项目（部分）使用了Mercurial作为版本控制

 Mozilla
 OpenJDK
 OpenSolaris
 Symbian OS
 The Xen hypervisor
 Adblock Plus
 Adium
 Aldrin
 Audacious
 CubicWeb
 Dovecot IMAP server
 GNU Octave
 Growl
 LinuxTV/Video4Linux
 LuxRender 3D Render Engine
 MoinMoin wiki software
 Mutt (email client)
 Netbeans
 NxOS
 Nuxeo
 SAGE
 x265

 参见 

版本控制
分布式版本控制
版本控制软件列表
版本控制软件的比较

 参考文献 

 外部链接 
官方Mercurial项目wiki
非官方的Mercurial主页 
Mercurial：权威指南 ，Bryan O'Sullivan 2009年通过O'Reilly出版，免费在网上发布
Mercurial: an alternative to git from LWN.net
TeamWare用户 
Google TechTalk on Mercurial 
Subversion还是CVS、Bazaar或者Mercurial？比较四个开源版本控制系统

Category:版本控制系统
Category:自由跨平台軟體
Category:用C編程的自由軟體
Category:用Python編程的自由軟體