README
117 lines
| 3.3 KiB
| text/plain
|
TextLexer
mpm@selenic.com
|
r204 | Setting up Mercurial: | ||
mpm@selenic.com
|
r0 | |||
mpm@selenic.com
|
r204 | Note: some distributions fails to include bits of distutils by | ||
mpm@selenic.com
|
r205 | 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. | ||||
mpm@selenic.com
|
r204 | |||
First, unpack the source: | ||||
mpm@selenic.com
|
r0 | |||
$ tar xvzf mercurial-<ver>.tar.gz | ||||
$ cd mercurial-<ver> | ||||
mpm@selenic.com
|
r204 | |||
mpm@selenic.com
|
r205 | To install system-wide: | ||
mpm@selenic.com
|
r204 | |||
$ python setup.py install # change python to python2.3 if 2.2 is default | ||||
mpm@selenic.com
|
r205 | To install in your home directory (~/bin and ~/lib, actually), run: | ||
mpm@selenic.com
|
r204 | |||
$ python2.3 setup.py install --home=~ | ||||
mpm@selenic.com
|
r0 | $ export PYTHONPATH=${HOME}/lib/python # add this to your .bashrc | ||
mpm@selenic.com
|
r204 | $ export PATH=${HOME}/bin:$PATH # | ||
mpm@selenic.com
|
r205 | |||
mpm@selenic.com
|
r204 | And finally: | ||
mpm@selenic.com
|
r0 | $ hg # test installation, show help | ||
If you get complaints about missing modules, you probably haven't set | ||||
PYTHONPATH correctly. | ||||
Setting up a Mercurial project: | ||||
$ cd linux/ | ||||
$ hg init # creates .hg | ||||
$ hg status # show changes between repo and working dir | ||||
$ hg diff # generate a unidiff | ||||
$ hg addremove # add all unknown files and remove all missing files | ||||
$ hg commit # commit all changes, edit changelog entry | ||||
mpm@selenic.com
|
r160 | $ hg export # export a changeset as a diff | ||
mpm@selenic.com
|
r0 | |||
Mercurial will look for a file named .hgignore in the root of your | ||||
repository contains a set of regular expressions to ignore in file | ||||
paths. | ||||
Mercurial commands: | ||||
$ hg history # show changesets | ||||
$ hg log Makefile # show commits per file | ||||
$ hg checkout # check out the tip revision | ||||
mpm@selenic.com
|
r160 | $ hg checkout <id> # check out a specified changeset | ||
# IDs can be tags, revision numbers, or unique | ||||
# subsets of changeset hash numbers | ||||
mpm@selenic.com
|
r0 | $ hg add foo # add a new file for the next commit | ||
$ hg remove bar # mark a file as removed | ||||
$ hg verify # check repo integrity | ||||
mpm@selenic.com
|
r67 | $ hg tags # show current tags | ||
mpm@selenic.com
|
r81 | $ hg annotate [files] # show changeset numbers for each file line | ||
mpm@selenic.com
|
r0 | |||
Branching and merging: | ||||
$ cd .. | ||||
$ mkdir linux-work | ||||
$ cd linux-work | ||||
$ hg branch ../linux # create a new branch | ||||
$ hg checkout # populate the working directory | ||||
$ <make changes> | ||||
$ hg commit | ||||
$ cd ../linux | ||||
$ hg merge ../linux-work # pull changesets from linux-work | ||||
Importing patches: | ||||
Fast: | ||||
$ patch < ../p/foo.patch | ||||
$ hg addremove | ||||
$ hg commit | ||||
Faster: | ||||
$ patch < ../p/foo.patch | ||||
$ hg commit `lsdiff -p1 ../p/foo.patch` | ||||
Fastest: | ||||
$ cat ../p/patchlist | xargs hg import -p1 -b ../p | ||||
mpm@selenic.com
|
r205 | Exporting a patch: | ||
(make changes) | ||||
$ hg commit | ||||
$ hg tip | ||||
28237:747a537bd090880c29eae861df4d81b245aa0190 | ||||
$ hg export 28237 > foo.patch # export changeset 28237 | ||||
mpm@selenic.com
|
r63 | Network support: | ||
mpm@selenic.com
|
r1 | # pull the self-hosting hg repo | ||
foo$ hg init | ||||
foo$ hg merge http://selenic.com/hg/ | ||||
mpm@selenic.com
|
r27 | foo$ hg checkout # hg co works too | ||
mpm@selenic.com
|
r1 | |||
mpm@selenic.com
|
r160 | # export your current repo via HTTP with browsable interface | ||
foo$ hg serve -n "My repo" -p 80 | ||||
mpm@selenic.com
|
r0 | # merge changes from a remote machine | ||
mpm@selenic.com
|
r176 | bar$ hg merge http://foo/ | ||
mpm@selenic.com
|
r160 | bar$ hg co # checkout the result | ||
mpm@selenic.com
|
r63 | |||
mpm@selenic.com
|
r160 | # Set up a CGI server on your webserver | ||
foo$ cp hgweb.cgi ~/public_html/hg-linux/index.cgi | ||||
foo$ emacs ~/public_html/hg-linux/index.cgi # adjust the defaults | ||||
mpm@selenic.com
|
r63 | |||
mpm@selenic.com
|
r204 | Symbolic repository names: | ||
Mercurial uses an optional file called ~/.hgpaths to track repo | ||||
locations symbolically. Simply add a line with the name, a space, and | ||||
a URL: | ||||
foo$ echo "main http://selenic.com/hg/" >> ~/.hgpaths | ||||
mpm@selenic.com
|
r179 | foo$ hg merge main | ||
foo$ hg co | ||||