Mercurial
Encyclopedia
Mercurial is a cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

, distributed revision control
Distributed revision control
A distributed revision control system , distributed version control or decentralized version control keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.-Distributed vs...

 tool for software developer
Software developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...

s. It is mainly implemented using the Python programming language
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

, but includes a binary diff
Diff
In computing, diff is a file comparison utility that outputs the differences between two files. It is typically used to show the changes between one version of a file and a former version of the same file. Diff displays the changes made per line for text files. Modern implementations also...

 implementation written in C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

. It is supported on Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 and Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....

 systems, such as FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

 and Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

. Mercurial is primarily a command line program but graphical user interface
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...

 extensions are available. All of Mercurial's operations are invoked as arguments to its driver program hg, a reference to the chemical symbol
Chemical symbol
A chemical symbol is a 1- or 2-letter internationally agreed code for a chemical element, usually derived from the name of the element, often in Latin. Only the first letter is capitalised...

 of the element mercury
Mercury (element)
Mercury is a chemical element with the symbol Hg and atomic number 80. It is also known as quicksilver or hydrargyrum...

.

Mercurial's major design goals include high performance and scalability, decentralized, fully distributed collaborative development, robust handling of both plain text
Plain text
In computing, plain text is the contents of an ordinary sequential file readable as textual material without much processing, usually opposed to formatted text....

 and binary file
Binary file
A binary file is a computer file which may contain any type of data, encoded in binary form for computer storage and processing purposes; for example, computer document files containing formatted text...

s, and advanced branching and merging capabilities, while remaining conceptually simple. It includes an integrated web interface. Mercurial has also taken steps to ease the transition for SVN users.

The creator and lead developer of Mercurial is Matt Mackall. Mercurial is released as free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 under the terms of the GNU GPL v2.

Technical information

Mercurial uses SHA-1 hashes to identify revisions. For repository access via a network, Mercurial uses an HTTP
Hypertext Transfer Protocol
The Hypertext Transfer Protocol is a networking protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web....

-based protocol that seeks to reduce round-trip requests, new connections and data transferred. Mercurial can also work over ssh
Secure Shell
Secure Shell is a network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers that it connects via a secure channel over an insecure network: a server and a client...

 where the protocol is very similar to the HTTP-based protocol. By default it uses a 3-way merge before calling external merge tools.

History

Mackall first announced Mercurial on April 19, 2005. The impetus for this was the announcement earlier that month by Bitmover that they were withdrawing the free version of BitKeeper
BitKeeper
BitKeeper is a software tool for distributed revision control of computer source code. A distributed system, BitKeeper competes largely against other systems such as Git and Mercurial...

.

BitKeeper had been used for the version control requirements of the Linux kernel project. Mackall decided to write a distributed version control system as a replacement for use with the Linux kernel. This project started a few days after another project called Git
Git (software)
Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...

, initiated by Linus Torvalds
Linus Torvalds
Linus Benedict Torvalds is a Finnish software engineer and hacker, best known for having initiated the development of the open source Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator...

 with similar aims.

The Linux kernel project decided to use Git
Git (software)
Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...

 rather than Mercurial, but Mercurial is now used by many other projects (see below).

Related software

  • GUI
    Graphical user interface
    In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...

     interfaces for Mercurial include:
    Hgk (tcl/tk): This is implemented as a Mercurial extension, and is part of the official version. This viewer displays the directed acyclic graph
    Directed acyclic graph
    In mathematics and computer science, a directed acyclic graph , is a directed graph with no directed cycles. That is, it is formed by a collection of vertices and directed edges, each edge connecting one vertex to another, such that there is no way to start at some vertex v and follow a sequence of...

     of the changesets of a Mercurial repository. This viewer can be invoked via the command hg view, if the extension is enabled. hgk was originally based on a similar tool for Git called gitk. There is an hgk replacement named hgview that is written in pure python and provides both gtk and qt interfaces.
    TortoiseHg
    TortoiseHg
    TortoiseHg is a Mercurial revision control client, implemented as a Windows Explorer and Nautilus shell extension. The underlying client can be used on the command line...

    : TortoiseHg is a shell extension and a series of applications for the Mercurial distributed revision control system. It is available for Windows Explorer and GNOME Nautilus.
    Murky: A Mac OS X GUI in Objective-C 2.0, runs on Mac OS X 10.5 and later.
    MacMercurial: A Mac OS X GUI '"not intended to completely replace command line use of Mercurial, only to ease the most common Mercurial operations," for Mac OS X 10.4 or later.
    MacHg: MacHg is a free and fast multithreaded front end for Mac OS X 10.6 and later.
    SourceTree: A commercial Mac OS X GUI client that works with both Mercurial and Git.
  • Related tools for merging include (h)gct (Qt) and Meld.
  • The convert extension allows import from CVS
    Concurrent Versions System
    The Concurrent Versions System , also known as the Concurrent Versioning System, is a client-server free software revision control system in the field of software development. Version control system software keeps track of all work and all changes in a set of files, and allows several developers ...

    , Darcs
    Darcs
    Darcs is a distributed revision control system created by David Roundy; it was designed to replace traditional, centralized source control systems such as CVS and Subversion...

    , Git
    Git (software)
    Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...

    , GNU Arch
    GNU arch
    In computing, GNU arch is a distributed revision control system that is part of the GNU Project and licensed under the GNU General Public License...

    , Monotone
    Monotone (software)
    Monotone is an open source software tool for distributed revision control. Monotone tracks revisions to files, groups sets of revisions into changesets, and tracks history across renames.The focus of the project is on integrity over performance...

    , Perforce
    Perforce
    Perforce is a commercial, proprietary, centralized revision control system developed by Perforce Software, Inc.-Architecture:Perforce is a client/server system.The server manages a central database and a master repository of file versions....

    , Bazaar and Subversion repositories.
  • Microsoft Visual Studio
    Microsoft Visual Studio
    Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...

     supports Mercurial with the VisualHG and HgSccPackage plugins.
  • NetBeans
    NetBeans
    NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...

     supports Mercurial from Version 6.
  • Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

     supports Mercurial with the MercurialEclipse plugin.

Source code hosting

The following websites provide free source code hosting for Mercurial repositories:
  • Bitbucket
    Bitbucket
    Bitbucket is a web-based hosting service for projects that use either the Mercurial or Git revision control systems. Bitbucket offers both commercial plans and free accounts...

  • CodePlex
  • Google Code
    Google Code
    Google Code is Google's site for developer tools, APIs and technical resources. The site contains documentation on using Google developer tools and APIs—including discussion groups and blogs for developers using Google's developer products....

  • JavaForge
    JavaForge
    JavaForge.com is a non profit and free open source software development community with a hosting portal for open source projects. It hosts software development services such as Project related Web hosting, Document Management, Wiki, Forum, Online chat, Issue tracking integrated with optional Git,...

     by Intland Software
    Intland Software
    Intland Software is a provider of enterprise-class collaboration solutions. The company is headquartered in Stuttgart, Germany and has an office in Sunnyvale, California.- History :Intland Software was formally founded in 1999 by two industry veterans...

     (with pull requests to control source code contribution)
  • Project Kenai
    Project Kenai
    Project Kenai is a collaborative hosting site for free and open source projects, launched by Sun Microsystems and now owned by Oracle. The service will be discontinued move the existing Kenai.com projects over to the Java.net domain for public use as part of Oracle's restructuring of...

     by Oracle
    Oracle
    In Classical Antiquity, an oracle was a person or agency considered to be a source of wise counsel or prophetic predictions or precognition of the future, inspired by the gods. As such it is a form of divination....

  • SourceForge
    SourceForge
    SourceForge Enterprise Edition is a collaborative revision control and software development management system. It provides a front-end to a range of software development lifecycle services and integrates with a number of free software / open source software applications .While originally itself...

  • Assembla
    Assembla
    Assembla is a collaborative project management service for open-source and commercial software. The service rents development applications to other companies online, reducing the cost of software development.-History:...

  • GNU Savannah
    GNU Savannah
    GNU Savannah is a project of the Free Software Foundation initiated by Loïc Dachary, which serves as a collaborative software development management system for Free Software projects. Savannah currently offers CVS, GNU arch, Subversion, Git, Mercurial, Bazaar, mailing list, web hosting, file...

  • Alioth
    Alioth (Debian)
    Alioth is a FusionForge system run by the Debian project for development of free software and free documentation,especially software or documentation to do with Debian....

     by Debian
    Debian
    Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...

  • BerliOS
    BerliOS
    BerliOS is a project founded by FOKUS, a Fraunhofer Institute located in Berlin, to coordinate the different interest groups in the field of open source software and to assume a neutral coordinator function...

  • Kiln by Fog Creek Software
    Fog Creek Software
    Fog Creek Software is a software company specializing in project management tools. Its main products are FogBugz, a web-based project management tool, Fog Creek Copilot, a remote assistance tool, CityDesk, a desktop-based content management system, Kiln, a source control and code review tool built...

  • Others listed in the Mercurial wiki

Projects using Mercurial

Some projects using the Mercurial distributed RCS:

  • Adium
    Adium
    Adium is a free and open source instant messaging client for Mac OS X that supports multiple IM networks, including Windows Live Messenger, Yahoo! Messenger, Google Talk, AIM, ICQ, and XMPP. It supports many protocols through the libraries libezv , MGTwitterEngine , and libpurple...

  • Audacious
    Audacious Media Player
    Audacious is a free software audio player with a focus on low resource usage, high audio quality, and support for a wide range of audio formats. It is designed primarily for use on POSIX-compatible systems such as Linux, with limited support for Microsoft Windows...

  • Coin3D
    Coin3D
    Coin3D is an Open Inventor clone by the Norwegian company Kongsberg Oil & Gas Technologies . Coin3D, like Open Inventor, is a C++ object oriented retained mode 3D graphics API used to provide a higher layer of programming for OpenGL. The API provides a number of common graphics rendering constructs...

  • CubicWeb
    CubicWeb
    CubicWeb is an open source semantic web application framework, licensed under the LGPL. It is written in Python.It has been an open free software project since October 2008, but the project began in 2000 and was initially developed by for internal uses such as intranet, bug tracker and forge...

  • Dovecot
    Dovecot (software)
    Dovecot is an open source IMAP and POP3 server for Linux/UNIX-like systems, written primarily with security in mind. Developed by Timo Sirainen, Dovecot was first released in July 2002...

     IMAP server
  • Dreamwidth
    Dreamwidth
    Dreamwidth is an online journal service based on the LiveJournal code. It is a code fork of the original service, set up by ex-LiveJournal staff Denise Paolucci and Mark Smith, born out of a desire for a new community based on open access, transparency, freedom and respect.Dreamwidth was announced...

     blogging platform
  • GeeXboX
    GeeXboX
    GeeXboX is a free Linux distribution providing a media center software suite for personal computers. GeeXboX 2.0 and later uses XBMC for media playback and is implemented as Live USB and Live CD options. As such, the system does not need to be permanently installed to a hard drive, as most modern...

  • GNU Multi-Precision Library
    GNU Multi-Precision Library
    The GNU Multiple Precision Arithmetic Library, also known as GMP, is a free library for arbitrary-precision arithmetic, operating on signed integers, rational numbers, and floating point numbers...

  • GNU Octave
    GNU Octave
    GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command-line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB...

  • Go programming language
    Go (programming language)
    Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being...

  • Growl
  • Illumos
    Illumos
    Illumos is a derivative of OS/Net , which basically is a Solaris/OpenSolaris kernel with the bulk of the drivers, core libraries, and basic utilities. It is dependent on OS/Net, which Illumos will follow very closely while allowing to retain changes to code which might be unacceptable to upstream...

  • LEMON
    LEMON (C++ library)
    LEMON is an open source graph library written in the C++ language providing implementations of common data structures and algorithms with focus on combinatorial optimization tasks connected mainly with graphs and networks...

  • LinuxTV
    LinuxTV
    The LinuxTV project is an informal group of volunteers who develop software related to digital television for the Linux operating system. The community develops and maintains the DVB driver subsystem which is part of the Linux 2.6.x kernel...

    /Video4Linux
    Video4Linux
    Video4Linux or V4L is a video capture application programming interface for Linux. Many USB webcams, TV tuners, and other devices are supported. Video4Linux is closely integrated with the Linux kernel. Video4Linux was named after Video for Windows , but is not technically related to it.- V4L2 :V4L2...

  • Lugaru HD
  • LuxRender
    LuxRender
    LuxRender is an open source software rendering system for physically correct image synthesis. The program runs on Microsoft Windows, Mac OS X and Linux and exporters are available for Blender, SketchUp, Cinema 4D, XSI, DAZ Studio, and Maya.-Overview:...

     3D Render Engine
  • Mercurial
  • MoinMoin
    MoinMoin
    MoinMoin is a wiki engine implemented in Python, initially based on the PikiPiki wiki engine. The MoinMoin code is licensed under the GNU General Public License v2, or any later version .A number of organizations use MoinMoin to run public wikis,...

     wiki software
  • Mozilla
    Mozilla
    Mozilla is a term used in a number of ways in relation to the Mozilla.org project and the Mozilla Foundation, their defunct commercial predecessor Netscape Communications Corporation, and their related application software....

  • Mutt
  • Netbeans
    NetBeans
    NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...

  • Nuxeo
    Nuxeo
    Nuxeo delivers an open source document management application built with a complete, modular and extensible open source platform for enterprise content management. Other packaged applications built with the platform provide solutions for digital asset management and case management...

  • Ogre3D
  • OpenJDK
    OpenJDK
    OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

  • OpenIndiana
    OpenIndiana
    OpenIndiana is a Unix-like computer operating system released as free and open source software. It forked from OpenSolaris after the discontinuation of that project by Oracle and aims to continue development and distribution of the OpenSolaris codebase. The project operates under the umbrella of...

  • OpenOffice.org
    OpenOffice.org
    OpenOffice.org, commonly known as OOo or OpenOffice, is an open-source application suite whose main components are for word processing, spreadsheets, presentations, graphics, and databases. OpenOffice is available for a number of different computer operating systems, is distributed as free software...

  • OSSEC
    OSSEC
    OSSEC is a free, open source host-based intrusion detection system . It performs log analysis, integrity checking, Windows registry monitoring, rootkit detection, time-based alerting and active response. It provides intrusion detection for most operating systems, including Linux, OpenBSD, FreeBSD,...

  • PETSc
    Portable, Extensible Toolkit for Scientific Computation
    The Portable, Extensible Toolkit for Scientific Computation , is a suite of data structures and routines for the scalable solution of scientific applications modeled by partial differential equations. It employs the Message Passing Interface standard for all message-passing communication...

  • Python (programming language)
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

  • RabbitMQ
    RabbitMQ
    RabbitMQ is an open source message broker software , using the standard Advanced Message Queuing Protocol . The RabbitMQ server is written in Erlang and is built on the Open Telecom Platform framework for clustering and failover. Rabbit Technologies Ltd., acquired in April 2010 by VMware, develops...

  • RawTherapee
  • Sage
    SAGE (Computer Algebra System)
    Sage is mathematical software with features covering many aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus...

  • Symbian OS
  • Nokia Maps
    Nokia Maps
    Nokia Maps is a free mapping product and service by Nokia for its mobile phones and smartphone multimedia devices....


  • Tryton
    Tryton
    Tryton is a three-tier high-level general purpose computer application platform on top of which is built a business solution through a set of so-called Tryton modules....

  • Tuenti
    Tuenti
    Tuenti is a Spain-based, invitation-only private social networking website that has been referred to as the "Spanish Facebook." Tuenti, pronounced in Spanish, sounds like Twenty in English...

  • Vim
    Vim (text editor)
    Vim is a text editor written by Bram Moolenaar and first released publicly in 1991. Based on the vi editor common to Unix-like systems, Vim is designed for use both from a command line interface and as a standalone application in a graphical user interface...

  • W3C


See also

  • Distributed revision control
    Distributed revision control
    A distributed revision control system , distributed version control or decentralized version control keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.-Distributed vs...

  • List of revision control software
  • Comparison of revision control software
    Comparison of revision control software
    The following is a comparison of revision control software. The following tables includes general and technical information for notable revision control and software configuration management software.- General information :Table Explanation...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK