Mercurial

Mercurial, a.k.a. Hg, is a distributed source control management tool

URL: http://mercurial.selenic.com/

Basic Concepts

 * Working copy: Root folder where your project files are located;


 * Repository (a.k.a. repo): Inside every working copy folder, there's an .hg folder, which is an Hg repository. It stores all change history of your files. Every project developer has one. You can also choose to have a main repository in a specific computer.


 * .hgignore: Similar to .cvsignore. Located at the root of the working copy. Specifies which files to ignore.


 * commit: Stores inside the .hg folder (i.e. the local repository) the changes made to the working copy. A commit is stored as a new changeset;


 * changeset: Conveys the changes made to a previous state of the repository. Each changeset has a changeset id, which is a globally unique identifier. Each changeset has a comment;


 * pull: Brings changesets from a different repository to your local one (only changesets that you don't already have);


 * push: Sends changesets from you local repository to a different one (only changesets that don't already exist on the other repository);


 * clone: Similar to SVN's checkout command. When you want to work on a project that you don't have, you clone the project's repository

Quick Start
$ hg init (project-directory) $ cd (project-directory) $ (add some files) $ hg add $ hg commit -m 'Initial commit' $ hg clone http://selenic.com/repo/hello $ cd hello $ (edit files) $ hg add (new files) $ hg commit -m 'My changes' $ hg push
 * Create a project and commit
 * Clone a project and push changes

Main Links

 * http://hginit.com - an excellent Mercurial tutorial by Joel Spolsky
 * Online book: Mercurial: The Definitive Guide
 * Quick start: http://mercurial.selenic.com/wiki/QuickStart
 * Basic introduction to version control and Mercurial: http://www.soton.ac.uk/~fangohr/computing/Mercurial/talk.pdf

More Information

 * Intro to Distributed Version Control (Illustrated)
 * Mercurial on Wikipedia
 * Mercurial Wiki
 * Mercurial HOWTOs
 * Mercurial success story
 * Publishing Repositories with hgwebdir.cgi
 * Workflow examples
 * From SVN to Mercurial HOWTO
 * Best practices in mercurial: branch vs. clone, and partial merges?