Mercurial > hg-website
annotate hgscm/templates/quick_start.html @ 280:16e75a81ac16
Added info: All history is in .hg
author | Arne Babenhauserheide <bab@draketo.de> |
---|---|
date | Sat, 24 Oct 2009 13:33:03 +0200 |
parents | c7bf003b17fd |
children |
rev | line source |
---|---|
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
1 {% extends "base.html" %} |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
2 |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
3 {% load extras %} |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
4 {% block content %} |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
5 |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
6 <div class="row"> |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
7 <div class="col big"> |
204 | 8 <h1>Quick Start</h1> |
9 <p><em>How to get going at once.</em></p> | |
10 <h2>Part 0: Instant usage</h2> | |
11 <p><em>(you know this from the main page)</em></p> | |
12 <p>Clone a project and create a patch </p> | |
13 <pre><code>$ hg clone http://hg-scm.org/hello | |
195
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
14 $ cd hello |
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
15 $ (edit files) |
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
16 $ hg add (new files) |
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
17 $ hg commit -m 'My changes' |
204 | 18 $ hg export tip > patch.diff |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
19 |
204 | 20 </code></pre> |
21 <p>Create a project and commit </p> | |
22 <pre><code>$ hg init (project-directory) | |
195
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
23 $ cd (project-directory) |
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
24 $ (add some files) |
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
25 $ hg add |
5bc5fe45852a
cleaned up quickstart a bit.
Arne Babenhauserheide <bab@draketo.de>
parents:
193
diff
changeset
|
26 $ hg commit -m 'Initial commit' |
204 | 27 </code></pre> |
28 <h2>Part 1: Using Mercurial</h2> | |
229 | 29 <p>Aside from the practical Quick Start above, there are only a few commands you need to start |
30 working. </p> | |
31 <p>Even if you stick to these basics, Mercurial is quite powerful. And they are very easy to | |
32 use, once you see the model behind them: Each repository has the whole history, and history is | |
280
16e75a81ac16
Added info: All history is in .hg
Arne Babenhauserheide <bab@draketo.de>
parents:
237
diff
changeset
|
33 not necessarily linear (part 2 explains that model in a bit more detail). All that history is |
16e75a81ac16
Added info: All history is in .hg
Arne Babenhauserheide <bab@draketo.de>
parents:
237
diff
changeset
|
34 stored in the ".hg" file inside the top-level folder of your project.</p> |
204 | 35 <p>A quick overview of the basic commands: </p> |
36 <ul> | |
37 <li>hg init: create a new repository | |
38 </li><li>hg commit: save your changes in the current repository | |
39 </li><li>hg log: see all changes in your repository | |
237 | 40 </li><li>hg pull: get all changes from another repository into the current one |
204 | 41 </li><li>hg push: get all changes from your repository into another one |
42 </li><li>hg serve: create an instant-webserver. People can see the history there and pull from it | |
43 </li><li>hg merge: join different lines of history | |
44 </li> | |
45 </ul> | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
46 <p>If you want to see a nice graph of the history, just do <hg>hg serve</hg> in your repository and then direct your browser to </p> |
204 | 47 <pre><code> http://127.0.0.1:8000 |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
48 |
204 | 49 </code></pre> |
50 <p>This also helps getting a feeling for what the commands do. </p> | |
216
68d5f2b82018
Added easy to use section to the about page
Arne Babenhauserheide <bab@draketo.de>
parents:
207
diff
changeset
|
51 <p>(you can also do a lot of finegrained stuff by using different command options. Just call "hg help <command>" to see them). </p> |
204 | 52 <p>One step you'll likely want to do is setting your username in your Mercurial config file. </p> |
53 <p>For this you can configure a proper name and email address in ~/.hgrc (or on a Windows system in %USERPROFILE%Mercurial.ini) by adding lines such as the following: </p> | |
54 <pre><code>[ui] | |
55 username = John Doe <john@example.com> | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
56 |
204 | 57 </code></pre> |
58 <p>I you want more than this quick overview, please have a look at our longer <a href="{% url workflow_guide %}">practical guide</a>. </p> | |
59 <h2>Part 2: Understanding Mercurial in 6 steps</h2> | |
60 <p>Now we'll look at some of the basic concepts of Mercurial to get a better understanding of its internals: </p> | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
61 <ol class="undecorated_list"> |
204 | 62 <li> |
63 <p>Like in Subversion, history consists of a number of commits. They're | |
64 called changesets in Mercurial.</p> | |
105
7a057bf137c5
Added a bastic draft for a quick_start - copied from the mailing list :) .
Arne Babenhauserheide <bab@draketo.de>
parents:
diff
changeset
|
65 |
204 | 66 </li><li> |
67 <p>Subversion requires a strict linear ordering of the commits and | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
68 gives nice linear revision numbers to them. So revision N has only |
204 | 69 one child revision, N+1. This is simple, but it requires a central server to make sure that |
70 everybody agrees on the revision numbers.</p> | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
71 |
204 | 72 </li><li> |
73 <p>Mercurial generalizes this by letting each changeset have multiple | |
74 children. If I work alone and make commits I'll make</p> | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
75 <pre><code>C1 --> C2 --> C3 |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
76 |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
77 </code></pre> |
204 | 78 <p>by making three commits. </p> |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
79 |
204 | 80 <p>The commit C3 with no children is a "head". |
81 It is also the newest changeset in the repository -- called "tip". If I shared C1 with you and you started your work from that, your | |
82 commits will build a repository like this:</p> | |
83 <pre><code>C1 --> C2' --> C3' | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
84 |
204 | 85 </code></pre> |
86 <p>Here C3' is a head in your repository and I don't know anything | |
87 about C2' and C3' yet.</p> | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
88 |
204 | 89 </li><li>If I pull from you, or you push to me, the two repositories are |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
90 compared. By default, all missing changesets are transferred. This |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
91 is all there is to push/pull: compare two graphs of changesets and |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
92 transfer the missing ones. |
204 | 93 <p>After a pull from you my repository will look like this:</p> |
94 <pre><code> /-> C2 --> C3 | |
95 C1 -< | |
96 \-> C2' --> C3' | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
97 |
204 | 98 </code></pre> |
99 <p>Here C1 has two child changesets, and the repository has two heads | |
100 since the development has diverged.</p> | |
101 <p>The changeset C3' will be the new tip since it is the newest | |
102 changeset in the repository. Note that tip is always a head, but a | |
103 head need not be the tip.</p> | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
104 |
204 | 105 </li><li>Having two heads suggest that someone should merge them -- otherwise |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
106 the changes from one will never be combined with the changed made in |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
107 the other head. |
204 | 108 <p>When merging with 'hg merge' the task is to figure out the canonical |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
109 way to combine the changesets. If the changes do not overlap this is |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
110 usually trivial, otherwise you have to do a three-way merge. The |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
111 merge must be committed and this creates a changeset which explains |
204 | 112 to the world how you think the two heads should be combined:</p> |
113 <pre><code> /-> C2 --> C3 -\ | |
114 C1 -< >-> M | |
115 \-> C2' --> C3' -/ | |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
116 |
204 | 117 </code></pre> |
118 <p>Note that the merge changeset M has two parents.</p> | |
119 <p>If you do not merge C3 and C3' and try to push, you get the 'new | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
120 remote head' message and push aborts. It aborts since it is a little |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
121 "impolite" to leave the job of merging to someone else -- he who |
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
122 created the two heads by pulling in some code should also normally |
204 | 123 do the merging. |
124 </p> | |
125 </li><li> | |
126 <p>It helped my understanding a lot to think in terms of the changeset graph. Just remember that:</p> | |
127 <ul><li> | |
128 <p>"hg commit" adds a new node. The parent changesets of the new node | |
129 is given by "hg parents"</p> | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
130 |
204 | 131 </li><li> |
132 <p>"hg push" and "hg pull" transfer nodes in the graph between two | |
133 repositories.</p> | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
134 |
204 | 135 </li><li> |
136 <p>"hg update" updates the working copy to reflect a given node in | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
137 the history graph. This also changes the parent changeset of the |
204 | 138 next commit, see "hg parents".</p> |
139 </li> | |
140 </ul> | |
141 </ol> | |
192
3b95da26a544
quick start: Included and partly reworked the mail from Martin Geisler for understanding Mercurial.
Arne Babenhauserheide <bab@draketo.de>
parents:
191
diff
changeset
|
142 |
204 | 143 <p>And if you want to quickly look up something, you can use one of the <a href="http://www.selenic.com/mercurial/wiki/index.cgi/QuickReferenceCardsAndCheatSheets">Mercurial cheatsheets</a>. </p> |
207
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
144 <p><em>Compiled from a great email by Martin Geisler.</em></p> |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
145 |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
146 </div> |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
147 <div class="col"> |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
148 {% download_button %} |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
149 {% mercurial_tricks %} |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
150 {% mercurial_tricks_advanced %} |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
151 </div> |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
152 </div> |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
153 |
c1c9a4f809ba
integrated quick_start and learn_mercurial into the django project (with links).
Arne Babenhauserheide <bab@draketo.de>
parents:
204
diff
changeset
|
154 {% endblock %} |