Mercurial > hg > mercurial-crew-with-dirclash
view README @ 254:c03f58e5fd2d
unify checkout and resolve into update
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
unify checkout and resolve into update
This replaces checkout and resolve with a single command:
$ hg help co
hg update [node]
update or merge working directory
If there are no outstanding changes in the working directory and
there is a linear relationship between the current version and the
requested version, the result is the requested version.
Otherwise the result is a merge between the contents of the
current working directory and the requested version. Files that
changed between either parent are marked as changed for the next
commit and a commit must be performed before any further updates
are allowed.
manifest hash: 513d285d7fb775d0560de49387042a685ea062f7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFComS7ywK+sNU5EO8RAmgRAJ96GA6qvHLy0Jp0fzUrR2os2azPuACePsdC
YBldZtA7yIuTnV2vIbn7OSE=
=QtM/
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Sat, 04 Jun 2005 18:34:35 -0800 |
parents | afe895fcc0d0 |
children | 3dae0296551d |
line wrap: on
line source
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> To install system-wide: $ python setup.py install # change python to python2.3 if 2.2 is default To install in your home directory (~/bin and ~/lib, actually), run: $ python2.3 setup.py install --home=~ $ export PYTHONPATH=${HOME}/lib/python # add this to your .bashrc $ export PATH=${HOME}/bin:$PATH # 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: $ 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 $ hg export # export a changeset as a diff 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 $ hg checkout <id> # check out a specified changeset # IDs can be tags, revision numbers, or unique # subsets of changeset hash numbers $ hg add foo # add a new file for the next commit $ hg remove bar # mark a file as removed $ hg verify # check repo integrity $ hg tags # show current tags $ hg annotate [files] # show changeset numbers for each file line 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 Exporting a patch: (make changes) $ hg commit $ hg tip 28237:747a537bd090880c29eae861df4d81b245aa0190 $ hg export 28237 > foo.patch # export changeset 28237 Network support: # pull the self-hosting hg repo foo$ hg init foo$ hg merge http://selenic.com/hg/ foo$ hg checkout # hg co works too # export your current repo via HTTP with browsable interface foo$ hg serve -n "My repo" -p 80 # merge changes from a remote machine bar$ hg merge http://foo/ bar$ hg co # checkout the result # 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 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 foo$ hg merge main foo$ hg co