Show More
Name | Size | Modified | Last Commit | Author |
---|---|---|---|---|
doc | ||||
mercurial | ||||
templates | ||||
tests | ||||
.hgignore | Loading ... | |||
.hgtags | Loading ... | |||
MANIFEST.in | Loading ... | |||
PKG-INFO | Loading ... | |||
README | Loading ... | |||
comparison.txt | Loading ... | |||
convert-repo | Loading ... | |||
hg | Loading ... | |||
hgweb.cgi | Loading ... | |||
notes.txt | Loading ... | |||
rewrite-log | Loading ... | |||
setup.py | Loading ... | |||
tkmerge | Loading ... |
Setting up Mercurial in your home directory:
Note: Debian fails to include bits of distutils, you'll need
python-dev to install. Alternately, shove everything somewhere in
your path.
$ tar xvzf mercurial-<ver>.tar.gz
$ cd mercurial-<ver>
$ python2.3 setup.py install --home ~
$ export PYTHONPATH=${HOME}/lib/python # add this to your .bashrc
$ export HGMERGE=tkmerge # customize this
$ 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
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
# Give symbolic names to repos
foo$ echo "main http://selenic.com/hg/" >> ~/.hgpaths # one pair per line
foo$ hg merge main
foo$ hg co