annotate README @ 990:5007e0bdeed2

Fix long-standing excessive file merges Since switching to the multihead approach, we've been creating excessive file-level merges where files are marked as merged with their ancestors. This explicitly checks at commit time whether the two parent versions are linearly related, and if so, reduces the file check-in to a non-merge. Then the file is compared against the remaining parent, and, if equal, skips check-in of that file (as it's not changed). Since we're not checking in all files that were different between versions, we no longer need to mark so many files for merge. This removes most of the 'm' state marking as well. Finally, it is possible to do a tree-level merge with no file-level changes. This will happen if one user changes file A and another changes file B. Thus, if we have have two parents, we allow commit to proceed even if there are no file-level changes.
author mpm@selenic.com
date Sun, 21 Aug 2005 21:59:55 -0700
parents 4f81068ed8cd
children 2073e5a71008
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
445
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
1 MERCURIAL QUICK-START
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
2
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
3 Setting up Mercurial:
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
4
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
5 Note: some distributions fails to include bits of distutils by
205
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
6 default, you'll need python-dev to install. You'll also need a C
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
7 compiler and a 3-way merge tool like merge, tkdiff, or kdiff3.
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
8
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
9 First, unpack the source:
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
10
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
11 $ tar xvzf mercurial-<ver>.tar.gz
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
12 $ cd mercurial-<ver>
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
13
205
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
14 To install system-wide:
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
15
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
16 $ python setup.py install # change python to python2.3 if 2.2 is default
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
17
205
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
18 To install in your home directory (~/bin and ~/lib, actually), run:
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
19
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
20 $ python2.3 setup.py install --home=~
507
dd8b19114fe7 README: mention lib64/
mpm@selenic.com
parents: 445
diff changeset
21 $ export PYTHONPATH=${HOME}/lib/python # (or lib64/ on some systems)
dd8b19114fe7 README: mention lib64/
mpm@selenic.com
parents: 445
diff changeset
22 $ export PATH=${HOME}/bin:$PATH # add these to your .bashrc
205
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
23
204
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
24 And finally:
161cef501e8d README: integrate various changes and suggestions from Rafael Villar Burke
mpm@selenic.com
parents: 182
diff changeset
25
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
26 $ hg # test installation, show help
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
27
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
28 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
29 PYTHONPATH correctly.
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 Setting up a Mercurial project:
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
32
445
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
33 $ cd project/
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
34 $ hg init # creates .hg
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
35 $ 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
36 $ hg commit # commit all changes, edit changelog entry
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
37
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
38 Mercurial will look for a file named .hgignore in the root of your
633
f597539c7abd Slim down and update README a bit
Matt Mackall <mpm@selenic.com>
parents: 631
diff changeset
39 repository which contains a set of regular expressions to ignore in
f597539c7abd Slim down and update README a bit
Matt Mackall <mpm@selenic.com>
parents: 631
diff changeset
40 file paths.
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
41
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
42 Branching and merging:
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
43
633
f597539c7abd Slim down and update README a bit
Matt Mackall <mpm@selenic.com>
parents: 631
diff changeset
44 $ hg clone linux linux-work # create a new branch
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
45 $ cd linux-work
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
46 $ <make changes>
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
47 $ hg commit
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
48 $ cd ../linux
261
3dae0296551d Update README
mpm@selenic.com
parents: 241
diff changeset
49 $ hg pull ../linux-work # pull changesets from linux-work
445
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
50 $ hg update -m # merge the new tip from linux-work into
261
3dae0296551d Update README
mpm@selenic.com
parents: 241
diff changeset
51 # our working directory
633
f597539c7abd Slim down and update README a bit
Matt Mackall <mpm@selenic.com>
parents: 631
diff changeset
52 $ hg commit # commit the result of the merge
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
53
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
54 Importing patches:
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
55
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
56 Fast:
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
57 $ patch < ../p/foo.patch
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
58 $ hg addremove
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
59 $ hg commit
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
60
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
61 Faster:
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
62 $ patch < ../p/foo.patch
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
63 $ hg commit `lsdiff -p1 ../p/foo.patch`
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
64
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
65 Fastest:
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
66 $ 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
67
205
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
68 Exporting a patch:
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
69
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
70 (make changes)
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
71 $ hg commit
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
72 $ hg tip
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
73 28237:747a537bd090880c29eae861df4d81b245aa0190
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
74 $ hg export 28237 > foo.patch # export changeset 28237
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
75
63
1c590d34bf61 Minor changes for release 0.4e
mpm@selenic.com
parents: 27
diff changeset
76 Network support:
1c590d34bf61 Minor changes for release 0.4e
mpm@selenic.com
parents: 27
diff changeset
77
445
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
78 # pull from the primary Mercurial repo
633
f597539c7abd Slim down and update README a bit
Matt Mackall <mpm@selenic.com>
parents: 631
diff changeset
79 foo$ hg clone http://selenic.com/hg/
f597539c7abd Slim down and update README a bit
Matt Mackall <mpm@selenic.com>
parents: 631
diff changeset
80 foo$ cd hg
1
273ce12ad8f1 Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents: 0
diff changeset
81
160
5c331d941c7f Update the README a bit
mpm@selenic.com
parents: 81
diff changeset
82 # export your current repo via HTTP with browsable interface
5c331d941c7f Update the README a bit
mpm@selenic.com
parents: 81
diff changeset
83 foo$ hg serve -n "My repo" -p 80
5c331d941c7f Update the README a bit
mpm@selenic.com
parents: 81
diff changeset
84
327
a9ad98a9c9bc Tweak README for branch, push, and .hgrc
mpm@selenic.com
parents: 261
diff changeset
85 # pushing changes to a remote repo with SSH
a9ad98a9c9bc Tweak README for branch, push, and .hgrc
mpm@selenic.com
parents: 261
diff changeset
86 foo$ hg push ssh://user@example.com/~/hg/
a9ad98a9c9bc Tweak README for branch, push, and .hgrc
mpm@selenic.com
parents: 261
diff changeset
87
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
88 # merge changes from a remote machine
261
3dae0296551d Update README
mpm@selenic.com
parents: 241
diff changeset
89 bar$ hg pull http://foo/
445
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
90 bar$ hg update -m # merge changes into your working directory
63
1c590d34bf61 Minor changes for release 0.4e
mpm@selenic.com
parents: 27
diff changeset
91
160
5c331d941c7f Update the README a bit
mpm@selenic.com
parents: 81
diff changeset
92 # Set up a CGI server on your webserver
445
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
93 foo$ cp hgweb.cgi ~/public_html/hg/index.cgi
fe48ffa3665f README tidy-up
mpm@selenic.com
parents: 330
diff changeset
94 foo$ emacs ~/public_html/hg/index.cgi # adjust the defaults
969
1d5b97537561 Minor README updates
mpm@selenic.com
parents: 633
diff changeset
95
1d5b97537561 Minor README updates
mpm@selenic.com
parents: 633
diff changeset
96 For more info:
1d5b97537561 Minor README updates
mpm@selenic.com
parents: 633
diff changeset
97
1d5b97537561 Minor README updates
mpm@selenic.com
parents: 633
diff changeset
98 Documentation in doc/
1d5b97537561 Minor README updates
mpm@selenic.com
parents: 633
diff changeset
99 Mercurial website at http://selenic.com/mercurial
1d5b97537561 Minor README updates
mpm@selenic.com
parents: 633
diff changeset
100 Mercurial wiki at http://selenic.com/mercurial/wiki