MERCURIAL QUICK-START
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 setup.py install --force
To install in your home directory (~/bin and ~/lib, actually), run:
$ python setup.py 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 # test installation, 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 http://selenic.com/hg/
foo$ cd hg
# export your current repo via HTTP with browsable interface
foo$ hg serve -n "My repo" -p 80
# pushing changes to a remote repo with SSH
foo$ hg push ssh://user@example.com/~/hg/
# merge changes from a remote machine
bar$ hg pull http://foo/
bar$ hg merge # merge changes into your working directory
# 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 http://selenic.com/mercurial