It is hard to overestimate the role of version control systems in the development cycle. They feature the following functions:
- securely store successive versions of the source code;
- provide a backup copy of the source code;
- enable team members to work simultaneously on the source code;
- aid in identifying release or particular versions of the project;
- give opportunity to create a new branch of the source code, and work with it without influence on the stability of the original version.
Mercurial is a source control management tool
Mercurial is fast and powerful version control system based on the distributed model. It was implemented mostly using clean and modular Python, that makes this tool highly extensive and flexible. Initially, Mercurial is a command line program, although intuitive graphical UI is available.
Mercurial is distributed as free software under the GNU GPL. Mercurial is a cross-platform tool that supports Windows, Free BSD, Mac OS X and Linux. Repository and copy of the entire project history can be stored on each developer's machine and commits can be made locally that makes the contribution process easier. Committing, branching and merging are really fast.
Among the open source projects that currently use Mercurial are: Python (Python developers moved from Subversion to Mercurial), Mozilla (includes popular Firefox internet browser, the email client Thunderbird and the application suite SeaMonkey), OpenSolaris (for OpenSolaris core components and packages), OpenJDK (official Java implementation of Sun Microsystems), ALSA, Xen, Xine, NetBeans, Dovecot, NTFS-3G, Vim and W3C.
Mercurial core features
Performance, scaling and reliabiliy:
- efficient handling of repository,
- regardless of size and type;
- compact data storage in indexed and compressed form;
- usage of HTTP and SSH for data duplication in compressed form across the network;
- unlimited number of developers can work on the project simultaneously;
- merging of decentralized repositories;
- performance and productivity are not influenced by the volume of storage, the number of files or recorded changes;
- no need to wait for unblocking;
- SHA1 is used to control the integrity of the data in the repository;
- storage is implemented in the transaction log form - data is not replaced, but added;
- quick algorithm for checking the repository integrity;
- built-in backup duplication and integrity checking.
Ease of use and implementation:
- easy-to-use CVS-like command set;
- built-in tips system;
- integrated web interface;
- large set of GUI interfaces;
- tools that simplify migration from the other source code control systems;
- support for multiple repository models;
- development and support for external handlers, add-ons, plugins, and custom extensions.
Mercurial is used for version control of files. It is quite simple in usage, but its features include high performance and scalability, decentralized and collaborative development, advanced branching and merging capabilities. This fast and light-weight software with scalable workflow is easy to use, easy to learn and hard to break.