hg-stable /

Filename Size Date modified Message
298 B
396 B
688 B
1.6 KB
17.6 KB
2.2 KB
2.8 KB
307 B
1.2 KB
4.9 KB
848 B
1.4 KB
3.8 KB


Setting up Mercurial:

Note: some distributions fails to include bits of distutils by default, you'll need python-dev to install. You'll also need a C compiler and a 3-way merge tool like merge, tkdiff, or kdiff3.

First, unpack the source:

$ tar xvzf mercurial-<ver>.tar.gz $ cd mercurial-<ver>

When installing, change python to python2.3 or python2.4 if 2.2 is the default on your system.

To install system-wide:

$ python install --force

To install in your home directory (~/bin and ~/lib, actually), run:

$ python install --home=${HOME} --force $ export PYTHONPATH=${HOME}/lib/python # (or lib64/ on some systems) $ export PATH=${HOME}/bin:$PATH # add these to your .bashrc

And finally:

$ hg debuginstall # run some basic tests $ hg # show help

If you get complaints about missing modules, you probably haven't set PYTHONPATH correctly.

Setting up a Mercurial project:

$ hg init project # creates project directory $ cd project

# copy files in, edit them

$ hg add # add all unknown files $ hg commit # commit all changes, edit changelog entry

Mercurial will look for a file named .hgignore in the root of your repository which contains a set of regular expressions to ignore in file paths.

Branching and merging:

$ hg clone project project-work # create a new branch $ cd project-work $ <make changes> $ hg commit $ cd ../project $ hg pull ../project-work # pull changesets from project-work $ hg merge # merge the new tip from project-work into

# our working directory

$ hg commit # commit the result of the merge

Importing patches:

Simple: $ patch < ../p/foo.patch $ hg commit -A

Fast: $ cat ../p/patchlist | xargs hg import -p1 -b ../p

Exporting a patch:

(make changes) $ hg commit $ hg export tip > foo.patch # export latest change

Network support:

# pull from the primary Mercurial repo foo$ hg clone foo$ cd hg

# make your current repo available via http://server:8000/ foo$ hg serve

# pushing and pulling changes to/from a remote repo with SSH foo$ hg push ssh:// foo$ hg pull ssh://

# merge changes from a remote machine (e.g. running 'hg serve') bar$ hg pull http://foo:8000/ bar$ hg merge # merge changes into your working directory bar$ hg commit # commit merge in to your local repository

# Set up a CGI server on your webserver foo$ cp hgweb.cgi ~/public_html/hg/index.cgi foo$ emacs ~/public_html/hg/index.cgi # adjust the defaults

For more info:

Documentation in doc/ Mercurial website at