Mercurial > hg > mercurial-crew-with-dirclash
annotate README @ 190:3dd5ce2fddb6
merge: short-circuit search for merge into empty repo
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
merge: short-circuit search for merge into empty repo
We should have 3 cases for merge:
- - we have no changesets
- - we have less than half the changesets
- - we have more than half the changesets
For no changesets, we can immediately tell that we need everything.
This happens when we initially branch from a remote repo, so we simply shortcircuit the search and grab everything from the root
When we're actually tracking a project, we should generally have most
of the changesets, so the current search algorithm should minimize
searching.
It should rarely occur that upstreams gets far ahead of us, in which
case, we suffer a longer search.
manifest hash: eabd55841b03225176ea72b985aad36431a438a9
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCmfajywK+sNU5EO8RAuyKAKCf7Nw6XSK5HEzbrZae7Q06e3dk4wCgjbK6
YUTEfkpPP1h3mNHIHRKz+aI=
=eGMq
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Sun, 29 May 2005 09:06:43 -0800 |
parents | 089594a5bbde |
children | 161cef501e8d |
rev | line source |
---|---|
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
1 Setting up Mercurial in your home directory: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
2 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
3 Note: Debian fails to include bits of distutils, you'll need |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
4 python-dev to install. Alternately, shove everything somewhere in |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
5 your path. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
6 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
7 $ tar xvzf mercurial-<ver>.tar.gz |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
8 $ cd mercurial-<ver> |
63 | 9 $ python2.3 setup.py install --home ~ |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
10 $ export PYTHONPATH=${HOME}/lib/python # add this to your .bashrc |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
11 $ export HGMERGE=tkmerge # customize this |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
12 $ hg # test installation, show help |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
13 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
14 If you get complaints about missing modules, you probably haven't set |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
15 PYTHONPATH correctly. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
16 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
17 Setting up a Mercurial project: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
18 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
19 $ cd linux/ |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
20 $ hg init # creates .hg |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
21 $ hg status # show changes between repo and working dir |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
22 $ hg diff # generate a unidiff |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
23 $ hg addremove # add all unknown files and remove all missing files |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
24 $ hg commit # commit all changes, edit changelog entry |
160 | 25 $ hg export # export a changeset as a diff |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
26 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
27 Mercurial will look for a file named .hgignore in the root of your |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
28 repository contains a set of regular expressions to ignore in file |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
29 paths. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
30 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
31 Mercurial commands: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
32 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
33 $ hg history # show changesets |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
34 $ hg log Makefile # show commits per file |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
35 $ hg checkout # check out the tip revision |
160 | 36 $ hg checkout <id> # check out a specified changeset |
37 # IDs can be tags, revision numbers, or unique | |
38 # subsets of changeset hash numbers | |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
39 $ hg add foo # add a new file for the next commit |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
40 $ hg remove bar # mark a file as removed |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
41 $ hg verify # check repo integrity |
67 | 42 $ hg tags # show current tags |
81
17884f79d59d
Add annotate and blame to the command list and README
mpm@selenic.com
parents:
67
diff
changeset
|
43 $ hg annotate [files] # show changeset numbers for each file line |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
44 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
45 Branching and merging: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
46 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
47 $ cd .. |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
48 $ mkdir linux-work |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
49 $ cd linux-work |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
50 $ hg branch ../linux # create a new branch |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
51 $ hg checkout # populate the working directory |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
52 $ <make changes> |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
53 $ hg commit |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
54 $ cd ../linux |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
55 $ hg merge ../linux-work # pull changesets from linux-work |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
56 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
57 Importing patches: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
58 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
59 Fast: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
60 $ patch < ../p/foo.patch |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
61 $ hg addremove |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
62 $ hg commit |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
63 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
64 Faster: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
65 $ patch < ../p/foo.patch |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
66 $ hg commit `lsdiff -p1 ../p/foo.patch` |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
67 |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
68 Fastest: |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
69 $ cat ../p/patchlist | xargs hg import -p1 -b ../p |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
70 |
63 | 71 Network support: |
72 | |
1
273ce12ad8f1
Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
0
diff
changeset
|
73 # pull the self-hosting hg repo |
273ce12ad8f1
Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
0
diff
changeset
|
74 foo$ hg init |
273ce12ad8f1
Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
0
diff
changeset
|
75 foo$ hg merge http://selenic.com/hg/ |
27 | 76 foo$ hg checkout # hg co works too |
1
273ce12ad8f1
Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
0
diff
changeset
|
77 |
160 | 78 # export your current repo via HTTP with browsable interface |
79 foo$ hg serve -n "My repo" -p 80 | |
80 | |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
81 # merge changes from a remote machine |
176
1d8e9637a0a4
Change hg: protocol name to http: and http: to old-http:
mpm@selenic.com
parents:
160
diff
changeset
|
82 bar$ hg merge http://foo/ |
160 | 83 bar$ hg co # checkout the result |
63 | 84 |
160 | 85 # Set up a CGI server on your webserver |
86 foo$ cp hgweb.cgi ~/public_html/hg-linux/index.cgi | |
87 foo$ emacs ~/public_html/hg-linux/index.cgi # adjust the defaults | |
63 | 88 |
179 | 89 # Give symbolic names to repos |
90 foo$ echo "main http://selenic.com/hg/" >> ~/.hgpaths # one pair per line | |
91 foo$ hg merge main | |
92 foo$ hg co |