bgneal@13
|
1 <!DOCTYPE html>
|
bgneal@13
|
2 <!--
|
bgneal@13
|
3 Copyright 2010 Google Inc.
|
bgneal@13
|
4
|
bgneal@13
|
5 Licensed under the Apache License, Version 2.0 (the "License");
|
bgneal@13
|
6 you may not use this file except in compliance with the License.
|
bgneal@13
|
7 You may obtain a copy of the License at
|
bgneal@13
|
8
|
bgneal@13
|
9 http://www.apache.org/licenses/LICENSE-2.0
|
bgneal@13
|
10
|
bgneal@13
|
11 Unless required by applicable law or agreed to in writing, software
|
bgneal@13
|
12 distributed under the License is distributed on an "AS IS" BASIS,
|
bgneal@13
|
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
bgneal@13
|
14 See the License for the specific language governing permissions and
|
bgneal@13
|
15 limitations under the License.
|
bgneal@13
|
16
|
bgneal@13
|
17 Original slides: Marcin Wichary (mwichary@google.com)
|
bgneal@13
|
18 Modifications: Ernest Delgado (ernestd@google.com)
|
bgneal@13
|
19 Alex Russell (slightlyoff@chromium.org)
|
bgneal@13
|
20
|
bgneal@13
|
21 landslide modifications: Adam Zapletal (adamzap@gmail.com)
|
bgneal@13
|
22 Nicolas Perriault (nperriault@gmail.com)
|
bgneal@13
|
23 -->
|
bgneal@13
|
24 <html>
|
bgneal@13
|
25 <head>
|
bgneal@13
|
26 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
bgneal@13
|
27 <meta http-equiv="X-UA-Compatible" content="chrome=1">
|
bgneal@13
|
28 <title>Introduction to Distributed Version Control with Mercurial</title>
|
bgneal@13
|
29 <!-- Styles -->
|
bgneal@13
|
30
|
bgneal@13
|
31 <link rel="stylesheet" media="print" href="./my_theme/css/print.css">
|
bgneal@13
|
32 <link rel="stylesheet" media="screen, projection" href="./my_theme/css/screen.css">
|
bgneal@13
|
33
|
bgneal@13
|
34
|
bgneal@13
|
35
|
bgneal@13
|
36 <link rel="stylesheet" href="slides.css">
|
bgneal@13
|
37
|
bgneal@13
|
38
|
bgneal@13
|
39 <!-- /Styles -->
|
bgneal@13
|
40 <!-- Javascripts -->
|
bgneal@13
|
41
|
bgneal@13
|
42 <script type="text/javascript" src="./my_theme/js/slides.js"></script>
|
bgneal@13
|
43
|
bgneal@13
|
44
|
bgneal@13
|
45 <!-- /Javascripts -->
|
bgneal@13
|
46 </head>
|
bgneal@13
|
47 <body>
|
bgneal@13
|
48 <div id="blank"></div>
|
bgneal@13
|
49 <div class="presentation">
|
bgneal@13
|
50 <div id="current_presenter_notes">
|
bgneal@13
|
51 <div id="presenter_note"></div>
|
bgneal@13
|
52 </div>
|
bgneal@13
|
53 <div class="slides">
|
bgneal@13
|
54
|
bgneal@13
|
55 <!-- slide source: slides.rst -->
|
bgneal@13
|
56 <div class="slide-wrapper">
|
bgneal@13
|
57 <div class="slide">
|
bgneal@13
|
58 <div class="inner">
|
bgneal@13
|
59
|
bgneal@13
|
60 <header><h1>Introduction to Distributed Version Control with Mercurial</h1></header>
|
bgneal@13
|
61
|
bgneal@13
|
62
|
bgneal@13
|
63 </div>
|
bgneal@13
|
64 <div class="presenter_notes">
|
bgneal@13
|
65 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
66 <section>
|
bgneal@13
|
67
|
bgneal@13
|
68 </section>
|
bgneal@13
|
69 </div>
|
bgneal@13
|
70 <footer>
|
bgneal@13
|
71
|
bgneal@13
|
72 <aside class="source">
|
bgneal@13
|
73 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
74 </aside>
|
bgneal@13
|
75
|
bgneal@13
|
76 <aside class="page_number">
|
bgneal@13
|
77 1/33
|
bgneal@13
|
78 </aside>
|
bgneal@13
|
79 </footer>
|
bgneal@13
|
80 </div>
|
bgneal@13
|
81 </div>
|
bgneal@13
|
82
|
bgneal@13
|
83 <!-- slide source: slides.rst -->
|
bgneal@13
|
84 <div class="slide-wrapper">
|
bgneal@13
|
85 <div class="slide">
|
bgneal@13
|
86 <div class="inner">
|
bgneal@13
|
87
|
bgneal@13
|
88 <header><h1>(Subliminal Message)</h1></header>
|
bgneal@13
|
89
|
bgneal@13
|
90
|
bgneal@13
|
91 <section><img alt="images/stop.jpg" src="images/stop.jpg" /></section>
|
bgneal@13
|
92
|
bgneal@13
|
93 </div>
|
bgneal@13
|
94 <div class="presenter_notes">
|
bgneal@13
|
95 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
96 <section>
|
bgneal@13
|
97
|
bgneal@13
|
98 </section>
|
bgneal@13
|
99 </div>
|
bgneal@13
|
100 <footer>
|
bgneal@13
|
101
|
bgneal@13
|
102 <aside class="source">
|
bgneal@13
|
103 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
104 </aside>
|
bgneal@13
|
105
|
bgneal@13
|
106 <aside class="page_number">
|
bgneal@13
|
107 2/33
|
bgneal@13
|
108 </aside>
|
bgneal@13
|
109 </footer>
|
bgneal@13
|
110 </div>
|
bgneal@13
|
111 </div>
|
bgneal@13
|
112
|
bgneal@13
|
113 <!-- slide source: slides.rst -->
|
bgneal@13
|
114 <div class="slide-wrapper">
|
bgneal@13
|
115 <div class="slide">
|
bgneal@13
|
116 <div class="inner">
|
bgneal@13
|
117
|
bgneal@13
|
118 <header><h1># whoami</h1></header>
|
bgneal@13
|
119
|
bgneal@13
|
120
|
bgneal@13
|
121 <section><p>Brian Neal <<a class="reference external" href="mailto:bgneal1@rockwellcollins.com">bgneal1@rockwellcollins.com</a>></p>
|
bgneal@13
|
122 <p>Started at Rockwell Collins in July 1999</p>
|
bgneal@13
|
123 <p>You might remember me from the following programs:</p>
|
bgneal@13
|
124 <ul class="simple">
|
bgneal@13
|
125 <li>UMS (July 1999 - Spring 2000)</li>
|
bgneal@13
|
126 <li>Surgical Strike - (Spring - Fall 2000)</li>
|
bgneal@13
|
127 <li>JTRS 2B - (Fall 2000 - Summer 2001)</li>
|
bgneal@13
|
128 <li>SCAMP SEP - (Summer 2001 - October 2004)</li>
|
bgneal@13
|
129 <li>TTNT (January 2005 - Present)</li>
|
bgneal@13
|
130 </ul></section>
|
bgneal@13
|
131
|
bgneal@13
|
132 </div>
|
bgneal@13
|
133 <div class="presenter_notes">
|
bgneal@13
|
134 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
135 <section>
|
bgneal@13
|
136
|
bgneal@13
|
137 </section>
|
bgneal@13
|
138 </div>
|
bgneal@13
|
139 <footer>
|
bgneal@13
|
140
|
bgneal@13
|
141 <aside class="source">
|
bgneal@13
|
142 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
143 </aside>
|
bgneal@13
|
144
|
bgneal@13
|
145 <aside class="page_number">
|
bgneal@13
|
146 3/33
|
bgneal@13
|
147 </aside>
|
bgneal@13
|
148 </footer>
|
bgneal@13
|
149 </div>
|
bgneal@13
|
150 </div>
|
bgneal@13
|
151
|
bgneal@13
|
152 <!-- slide source: slides.rst -->
|
bgneal@13
|
153 <div class="slide-wrapper">
|
bgneal@13
|
154 <div class="slide">
|
bgneal@13
|
155 <div class="inner">
|
bgneal@13
|
156
|
bgneal@13
|
157 <header><h1>Brief History of Version Control Tools</h1></header>
|
bgneal@13
|
158
|
bgneal@13
|
159
|
bgneal@13
|
160 <section><h2>First Generation</h2>
|
bgneal@13
|
161 <ul class="simple">
|
bgneal@13
|
162 <li>No networking!</li>
|
bgneal@13
|
163 <li>Concurrency method: locks</li>
|
bgneal@13
|
164 <li>Examples:<ul>
|
bgneal@13
|
165 <li>SCCS - 1972</li>
|
bgneal@13
|
166 <li>RCS - 1982</li>
|
bgneal@13
|
167 </ul>
|
bgneal@13
|
168 </li>
|
bgneal@13
|
169 </ul></section>
|
bgneal@13
|
170
|
bgneal@13
|
171 </div>
|
bgneal@13
|
172 <div class="presenter_notes">
|
bgneal@13
|
173 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
174 <section>
|
bgneal@13
|
175
|
bgneal@13
|
176 </section>
|
bgneal@13
|
177 </div>
|
bgneal@13
|
178 <footer>
|
bgneal@13
|
179
|
bgneal@13
|
180 <aside class="source">
|
bgneal@13
|
181 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
182 </aside>
|
bgneal@13
|
183
|
bgneal@13
|
184 <aside class="page_number">
|
bgneal@13
|
185 4/33
|
bgneal@13
|
186 </aside>
|
bgneal@13
|
187 </footer>
|
bgneal@13
|
188 </div>
|
bgneal@13
|
189 </div>
|
bgneal@13
|
190
|
bgneal@13
|
191 <!-- slide source: slides.rst -->
|
bgneal@13
|
192 <div class="slide-wrapper">
|
bgneal@13
|
193 <div class="slide">
|
bgneal@13
|
194 <div class="inner">
|
bgneal@13
|
195
|
bgneal@13
|
196 <header><h1>Brief History of Version Control Tools</h1></header>
|
bgneal@13
|
197
|
bgneal@13
|
198
|
bgneal@13
|
199 <section><h2>Second Generation</h2>
|
bgneal@13
|
200 <ul class="simple">
|
bgneal@13
|
201 <li>Client/Server networking; CVCS (Centralized Version Control)</li>
|
bgneal@13
|
202 <li>Concurrency method: merge before commit</li>
|
bgneal@13
|
203 <li>Examples:<ul>
|
bgneal@13
|
204 <li>CVS - 1990</li>
|
bgneal@13
|
205 <li>IBM Rational ClearCase - 1992</li>
|
bgneal@13
|
206 <li>Visual SourceSafe - 1994</li>
|
bgneal@13
|
207 <li>Perforce - 1995</li>
|
bgneal@13
|
208 <li>SVN - 2000</li>
|
bgneal@13
|
209 </ul>
|
bgneal@13
|
210 </li>
|
bgneal@13
|
211 </ul></section>
|
bgneal@13
|
212
|
bgneal@13
|
213 </div>
|
bgneal@13
|
214 <div class="presenter_notes">
|
bgneal@13
|
215 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
216 <section>
|
bgneal@13
|
217
|
bgneal@13
|
218 </section>
|
bgneal@13
|
219 </div>
|
bgneal@13
|
220 <footer>
|
bgneal@13
|
221
|
bgneal@13
|
222 <aside class="source">
|
bgneal@13
|
223 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
224 </aside>
|
bgneal@13
|
225
|
bgneal@13
|
226 <aside class="page_number">
|
bgneal@13
|
227 5/33
|
bgneal@13
|
228 </aside>
|
bgneal@13
|
229 </footer>
|
bgneal@13
|
230 </div>
|
bgneal@13
|
231 </div>
|
bgneal@13
|
232
|
bgneal@13
|
233 <!-- slide source: slides.rst -->
|
bgneal@13
|
234 <div class="slide-wrapper">
|
bgneal@13
|
235 <div class="slide">
|
bgneal@13
|
236 <div class="inner">
|
bgneal@13
|
237
|
bgneal@13
|
238 <header><h1>Brief History of Version Control Tools</h1></header>
|
bgneal@13
|
239
|
bgneal@13
|
240
|
bgneal@13
|
241 <section><h2>Third Generation</h2>
|
bgneal@13
|
242 <ul class="simple">
|
bgneal@13
|
243 <li>Distributed networking; DVCS (Distributed Version Control)</li>
|
bgneal@13
|
244 <li>Concurrency method: commit then merge</li>
|
bgneal@13
|
245 <li>Examples:<ul>
|
bgneal@13
|
246 <li>Bitkeeper - 2000</li>
|
bgneal@13
|
247 <li>Darcs - 2003</li>
|
bgneal@13
|
248 <li>Monotone - 2003</li>
|
bgneal@13
|
249 <li>Git - 2005</li>
|
bgneal@13
|
250 <li><strong>Mercurial</strong> - 2005</li>
|
bgneal@13
|
251 <li>Fossil - 2006</li>
|
bgneal@13
|
252 <li>Bazaar - 2007</li>
|
bgneal@13
|
253 <li>Veracity - 2011</li>
|
bgneal@13
|
254 </ul>
|
bgneal@13
|
255 </li>
|
bgneal@13
|
256 </ul></section>
|
bgneal@13
|
257
|
bgneal@13
|
258 </div>
|
bgneal@13
|
259 <div class="presenter_notes">
|
bgneal@13
|
260 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
261 <section>
|
bgneal@13
|
262
|
bgneal@13
|
263 </section>
|
bgneal@13
|
264 </div>
|
bgneal@13
|
265 <footer>
|
bgneal@13
|
266
|
bgneal@13
|
267 <aside class="source">
|
bgneal@13
|
268 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
269 </aside>
|
bgneal@13
|
270
|
bgneal@13
|
271 <aside class="page_number">
|
bgneal@13
|
272 6/33
|
bgneal@13
|
273 </aside>
|
bgneal@13
|
274 </footer>
|
bgneal@13
|
275 </div>
|
bgneal@13
|
276 </div>
|
bgneal@13
|
277
|
bgneal@13
|
278 <!-- slide source: slides.rst -->
|
bgneal@13
|
279 <div class="slide-wrapper">
|
bgneal@13
|
280 <div class="slide">
|
bgneal@13
|
281 <div class="inner">
|
bgneal@13
|
282
|
bgneal@13
|
283 <header><h1>What is a CVCS Again?</h1></header>
|
bgneal@13
|
284
|
bgneal@13
|
285
|
bgneal@13
|
286 <section><img alt="images/cvcs.png" src="images/cvcs.png" /></section>
|
bgneal@13
|
287
|
bgneal@13
|
288 </div>
|
bgneal@13
|
289 <div class="presenter_notes">
|
bgneal@13
|
290 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
291 <section>
|
bgneal@13
|
292
|
bgneal@13
|
293 </section>
|
bgneal@13
|
294 </div>
|
bgneal@13
|
295 <footer>
|
bgneal@13
|
296
|
bgneal@13
|
297 <aside class="source">
|
bgneal@13
|
298 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
299 </aside>
|
bgneal@13
|
300
|
bgneal@13
|
301 <aside class="page_number">
|
bgneal@13
|
302 7/33
|
bgneal@13
|
303 </aside>
|
bgneal@13
|
304 </footer>
|
bgneal@13
|
305 </div>
|
bgneal@13
|
306 </div>
|
bgneal@13
|
307
|
bgneal@13
|
308 <!-- slide source: slides.rst -->
|
bgneal@13
|
309 <div class="slide-wrapper">
|
bgneal@13
|
310 <div class="slide">
|
bgneal@13
|
311 <div class="inner">
|
bgneal@13
|
312
|
bgneal@13
|
313 <header><h1>So what's a DVCS look like?</h1></header>
|
bgneal@13
|
314
|
bgneal@13
|
315
|
bgneal@13
|
316 <section><img alt="images/dvcs.png" src="images/dvcs.png" />
|
bgneal@13
|
317 <p>All repositories are peers. By convention only, one repository is designated the master.
|
bgneal@13
|
318 It is possible for all peers to exchange changes (via <em>push</em> and <em>pull</em> operations).</p></section>
|
bgneal@13
|
319
|
bgneal@13
|
320 </div>
|
bgneal@13
|
321 <div class="presenter_notes">
|
bgneal@13
|
322 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
323 <section>
|
bgneal@13
|
324
|
bgneal@13
|
325 </section>
|
bgneal@13
|
326 </div>
|
bgneal@13
|
327 <footer>
|
bgneal@13
|
328
|
bgneal@13
|
329 <aside class="source">
|
bgneal@13
|
330 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
331 </aside>
|
bgneal@13
|
332
|
bgneal@13
|
333 <aside class="page_number">
|
bgneal@13
|
334 8/33
|
bgneal@13
|
335 </aside>
|
bgneal@13
|
336 </footer>
|
bgneal@13
|
337 </div>
|
bgneal@13
|
338 </div>
|
bgneal@13
|
339
|
bgneal@13
|
340 <!-- slide source: slides.rst -->
|
bgneal@13
|
341 <div class="slide-wrapper">
|
bgneal@13
|
342 <div class="slide">
|
bgneal@13
|
343 <div class="inner">
|
bgneal@13
|
344
|
bgneal@13
|
345 <header><h1>What does a DVCS buy you?</h1></header>
|
bgneal@13
|
346
|
bgneal@13
|
347
|
bgneal@13
|
348 <section><ul class="simple">
|
bgneal@13
|
349 <li>Private workspaces</li>
|
bgneal@13
|
350 <li>Offline mode</li>
|
bgneal@13
|
351 <li>Speed</li>
|
bgneal@13
|
352 <li>Scalability</li>
|
bgneal@13
|
353 <li>Split Geography</li>
|
bgneal@13
|
354 <li>Flexible workflows</li>
|
bgneal@13
|
355 <li>Distributed backups</li>
|
bgneal@13
|
356 <li><strong>Easier merging</strong></li>
|
bgneal@13
|
357 <li><strong>Commit before merge</strong></li>
|
bgneal@13
|
358 </ul></section>
|
bgneal@13
|
359
|
bgneal@13
|
360 </div>
|
bgneal@13
|
361 <div class="presenter_notes">
|
bgneal@13
|
362 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
363 <section>
|
bgneal@13
|
364
|
bgneal@13
|
365 </section>
|
bgneal@13
|
366 </div>
|
bgneal@13
|
367 <footer>
|
bgneal@13
|
368
|
bgneal@13
|
369 <aside class="source">
|
bgneal@13
|
370 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
371 </aside>
|
bgneal@13
|
372
|
bgneal@13
|
373 <aside class="page_number">
|
bgneal@13
|
374 9/33
|
bgneal@13
|
375 </aside>
|
bgneal@13
|
376 </footer>
|
bgneal@13
|
377 </div>
|
bgneal@13
|
378 </div>
|
bgneal@13
|
379
|
bgneal@13
|
380 <!-- slide source: slides.rst -->
|
bgneal@13
|
381 <div class="slide-wrapper">
|
bgneal@13
|
382 <div class="slide">
|
bgneal@13
|
383 <div class="inner">
|
bgneal@13
|
384
|
bgneal@13
|
385 <header><h1>Private Workspaces</h1></header>
|
bgneal@13
|
386
|
bgneal@13
|
387
|
bgneal@13
|
388 <section><ul class="simple">
|
bgneal@13
|
389 <li>You can safely experiment in your local repository</li>
|
bgneal@13
|
390 <li>Commit as often as you like without affecting the team<ul>
|
bgneal@13
|
391 <li>Encourages "micro-commits"</li>
|
bgneal@13
|
392 <li>With SVN, people often hold back until an entire feature is complete</li>
|
bgneal@13
|
393 </ul>
|
bgneal@13
|
394 </li>
|
bgneal@13
|
395 <li>Encourages experimentation<ul>
|
bgneal@13
|
396 <li>Make cheap repository clones to try things out</li>
|
bgneal@13
|
397 <li>Not visible to coworkers</li>
|
bgneal@13
|
398 </ul>
|
bgneal@13
|
399 </li>
|
bgneal@13
|
400 </ul></section>
|
bgneal@13
|
401
|
bgneal@13
|
402 </div>
|
bgneal@13
|
403 <div class="presenter_notes">
|
bgneal@13
|
404 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
405 <section>
|
bgneal@13
|
406
|
bgneal@13
|
407 </section>
|
bgneal@13
|
408 </div>
|
bgneal@13
|
409 <footer>
|
bgneal@13
|
410
|
bgneal@13
|
411 <aside class="source">
|
bgneal@13
|
412 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
413 </aside>
|
bgneal@13
|
414
|
bgneal@13
|
415 <aside class="page_number">
|
bgneal@13
|
416 10/33
|
bgneal@13
|
417 </aside>
|
bgneal@13
|
418 </footer>
|
bgneal@13
|
419 </div>
|
bgneal@13
|
420 </div>
|
bgneal@13
|
421
|
bgneal@13
|
422 <!-- slide source: slides.rst -->
|
bgneal@13
|
423 <div class="slide-wrapper">
|
bgneal@13
|
424 <div class="slide">
|
bgneal@13
|
425 <div class="inner">
|
bgneal@13
|
426
|
bgneal@13
|
427 <header><h1>Offline Mode</h1></header>
|
bgneal@13
|
428
|
bgneal@13
|
429
|
bgneal@13
|
430 <section><ul class="simple">
|
bgneal@13
|
431 <li>Work when you have spotty or no network access</li>
|
bgneal@13
|
432 <li>Full access to the repo when offline</li>
|
bgneal@13
|
433 <li>Can work on multiple tasks offline</li>
|
bgneal@13
|
434 </ul>
|
bgneal@13
|
435 <blockquote>
|
bgneal@13
|
436 <ul class="simple">
|
bgneal@13
|
437 <li>Work on bug report #1</li>
|
bgneal@13
|
438 <li>Commit</li>
|
bgneal@13
|
439 <li>Work on bug report #2</li>
|
bgneal@13
|
440 <li>With a CVCS, you'd have both fixes in the same pending commit</li>
|
bgneal@13
|
441 </ul>
|
bgneal@13
|
442 </blockquote></section>
|
bgneal@13
|
443
|
bgneal@13
|
444 </div>
|
bgneal@13
|
445 <div class="presenter_notes">
|
bgneal@13
|
446 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
447 <section>
|
bgneal@13
|
448
|
bgneal@13
|
449 </section>
|
bgneal@13
|
450 </div>
|
bgneal@13
|
451 <footer>
|
bgneal@13
|
452
|
bgneal@13
|
453 <aside class="source">
|
bgneal@13
|
454 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
455 </aside>
|
bgneal@13
|
456
|
bgneal@13
|
457 <aside class="page_number">
|
bgneal@13
|
458 11/33
|
bgneal@13
|
459 </aside>
|
bgneal@13
|
460 </footer>
|
bgneal@13
|
461 </div>
|
bgneal@13
|
462 </div>
|
bgneal@13
|
463
|
bgneal@13
|
464 <!-- slide source: slides.rst -->
|
bgneal@13
|
465 <div class="slide-wrapper">
|
bgneal@13
|
466 <div class="slide">
|
bgneal@13
|
467 <div class="inner">
|
bgneal@13
|
468
|
bgneal@13
|
469 <header><h1>Speed</h1></header>
|
bgneal@13
|
470
|
bgneal@13
|
471
|
bgneal@13
|
472 <section><ul class="simple">
|
bgneal@13
|
473 <li>Local operations are <strong>fast</strong><ul>
|
bgneal@13
|
474 <li>No, really, <strong>you will</strong> notice a big difference</li>
|
bgneal@13
|
475 <li>Switching between branches will blow your mind</li>
|
bgneal@13
|
476 </ul>
|
bgneal@13
|
477 </li>
|
bgneal@13
|
478 <li>Initial pull down of an entire repository <em>might</em> be slower than a CVCS<ul>
|
bgneal@13
|
479 <li>Then again, you might be surprised</li>
|
bgneal@13
|
480 <li>Mercurial, for example, stores an entire repository in less space than
|
bgneal@13
|
481 a SVN working copy in many cases</li>
|
bgneal@13
|
482 </ul>
|
bgneal@13
|
483 </li>
|
bgneal@13
|
484 </ul></section>
|
bgneal@13
|
485
|
bgneal@13
|
486 </div>
|
bgneal@13
|
487 <div class="presenter_notes">
|
bgneal@13
|
488 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
489 <section>
|
bgneal@13
|
490
|
bgneal@13
|
491 </section>
|
bgneal@13
|
492 </div>
|
bgneal@13
|
493 <footer>
|
bgneal@13
|
494
|
bgneal@13
|
495 <aside class="source">
|
bgneal@13
|
496 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
497 </aside>
|
bgneal@13
|
498
|
bgneal@13
|
499 <aside class="page_number">
|
bgneal@13
|
500 12/33
|
bgneal@13
|
501 </aside>
|
bgneal@13
|
502 </footer>
|
bgneal@13
|
503 </div>
|
bgneal@13
|
504 </div>
|
bgneal@13
|
505
|
bgneal@13
|
506 <!-- slide source: slides.rst -->
|
bgneal@13
|
507 <div class="slide-wrapper">
|
bgneal@13
|
508 <div class="slide">
|
bgneal@13
|
509 <div class="inner">
|
bgneal@13
|
510
|
bgneal@13
|
511 <header><h1>Scalability</h1></header>
|
bgneal@13
|
512
|
bgneal@13
|
513
|
bgneal@13
|
514 <section><ul class="simple">
|
bgneal@13
|
515 <li>Some CVCS systems require heavy weight hardware to support the server<ul>
|
bgneal@13
|
516 <li>E.g. ClearCase with a thousand users</li>
|
bgneal@13
|
517 <li>With a DVCS, only pushes & pulls contact a central server</li>
|
bgneal@13
|
518 <li>Most of the work is done locally</li>
|
bgneal@13
|
519 </ul>
|
bgneal@13
|
520 </li>
|
bgneal@13
|
521 </ul></section>
|
bgneal@13
|
522
|
bgneal@13
|
523 </div>
|
bgneal@13
|
524 <div class="presenter_notes">
|
bgneal@13
|
525 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
526 <section>
|
bgneal@13
|
527
|
bgneal@13
|
528 </section>
|
bgneal@13
|
529 </div>
|
bgneal@13
|
530 <footer>
|
bgneal@13
|
531
|
bgneal@13
|
532 <aside class="source">
|
bgneal@13
|
533 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
534 </aside>
|
bgneal@13
|
535
|
bgneal@13
|
536 <aside class="page_number">
|
bgneal@13
|
537 13/33
|
bgneal@13
|
538 </aside>
|
bgneal@13
|
539 </footer>
|
bgneal@13
|
540 </div>
|
bgneal@13
|
541 </div>
|
bgneal@13
|
542
|
bgneal@13
|
543 <!-- slide source: slides.rst -->
|
bgneal@13
|
544 <div class="slide-wrapper">
|
bgneal@13
|
545 <div class="slide">
|
bgneal@13
|
546 <div class="inner">
|
bgneal@13
|
547
|
bgneal@13
|
548 <header><h1>Split Geography</h1></header>
|
bgneal@13
|
549
|
bgneal@13
|
550
|
bgneal@13
|
551 <section><ul class="simple">
|
bgneal@13
|
552 <li>Imagine a team split between Cedar Rapids & Richardson...</li>
|
bgneal@13
|
553 <li>With a CVCS, you have to pick where to put the server</li>
|
bgneal@13
|
554 <li>The remote location is stuck with network latency & associated problems</li>
|
bgneal@13
|
555 <li>With a DVCS, each site can have a central repository<ul>
|
bgneal@13
|
556 <li>The two central repos can be synched when convenient or even scripted</li>
|
bgneal@13
|
557 </ul>
|
bgneal@13
|
558 </li>
|
bgneal@13
|
559 </ul>
|
bgneal@13
|
560 <img alt="images/split_geography.png" src="images/split_geography.png" /></section>
|
bgneal@13
|
561
|
bgneal@13
|
562 </div>
|
bgneal@13
|
563 <div class="presenter_notes">
|
bgneal@13
|
564 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
565 <section>
|
bgneal@13
|
566
|
bgneal@13
|
567 </section>
|
bgneal@13
|
568 </div>
|
bgneal@13
|
569 <footer>
|
bgneal@13
|
570
|
bgneal@13
|
571 <aside class="source">
|
bgneal@13
|
572 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
573 </aside>
|
bgneal@13
|
574
|
bgneal@13
|
575 <aside class="page_number">
|
bgneal@13
|
576 14/33
|
bgneal@13
|
577 </aside>
|
bgneal@13
|
578 </footer>
|
bgneal@13
|
579 </div>
|
bgneal@13
|
580 </div>
|
bgneal@13
|
581
|
bgneal@13
|
582 <!-- slide source: slides.rst -->
|
bgneal@13
|
583 <div class="slide-wrapper">
|
bgneal@13
|
584 <div class="slide">
|
bgneal@13
|
585 <div class="inner">
|
bgneal@13
|
586
|
bgneal@13
|
587 <header><h1>Flexible Workflows</h1></header>
|
bgneal@13
|
588
|
bgneal@13
|
589
|
bgneal@13
|
590 <section><ul class="simple">
|
bgneal@13
|
591 <li>There is no internal concept of a central repository</li>
|
bgneal@13
|
592 <li>A central repository exits only by convention</li>
|
bgneal@13
|
593 <li>More elaborate topologies and workflows can be created:<ul>
|
bgneal@13
|
594 <li>A SW team may push to a central SW repo</li>
|
bgneal@13
|
595 <li>Periodically changes from the SW repo are pushed to a QA repo</li>
|
bgneal@13
|
596 <li>Changes from the QA repo can be pushed into a release repo</li>
|
bgneal@13
|
597 </ul>
|
bgneal@13
|
598 </li>
|
bgneal@13
|
599 </ul>
|
bgneal@13
|
600 <img alt="images/flexible_workflows.png" src="images/flexible_workflows.png" /></section>
|
bgneal@13
|
601
|
bgneal@13
|
602 </div>
|
bgneal@13
|
603 <div class="presenter_notes">
|
bgneal@13
|
604 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
605 <section>
|
bgneal@13
|
606
|
bgneal@13
|
607 </section>
|
bgneal@13
|
608 </div>
|
bgneal@13
|
609 <footer>
|
bgneal@13
|
610
|
bgneal@13
|
611 <aside class="source">
|
bgneal@13
|
612 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
613 </aside>
|
bgneal@13
|
614
|
bgneal@13
|
615 <aside class="page_number">
|
bgneal@13
|
616 15/33
|
bgneal@13
|
617 </aside>
|
bgneal@13
|
618 </footer>
|
bgneal@13
|
619 </div>
|
bgneal@13
|
620 </div>
|
bgneal@13
|
621
|
bgneal@13
|
622 <!-- slide source: slides.rst -->
|
bgneal@13
|
623 <div class="slide-wrapper">
|
bgneal@13
|
624 <div class="slide">
|
bgneal@13
|
625 <div class="inner">
|
bgneal@13
|
626
|
bgneal@13
|
627 <header><h1>Distributed Backups</h1></header>
|
bgneal@13
|
628
|
bgneal@13
|
629
|
bgneal@13
|
630 <section><ul class="simple">
|
bgneal@13
|
631 <li>With a DVCS, multiple copies of the repository exist on multiple machines</li>
|
bgneal@13
|
632 <li><strong>Of course, this is no substitute for a real backup strategy!</strong></li>
|
bgneal@13
|
633 <li>But usually, and with short notice, you can easily designate a repository as
|
bgneal@13
|
634 the central repository in an emergency</li>
|
bgneal@13
|
635 </ul></section>
|
bgneal@13
|
636
|
bgneal@13
|
637 </div>
|
bgneal@13
|
638 <div class="presenter_notes">
|
bgneal@13
|
639 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
640 <section>
|
bgneal@13
|
641
|
bgneal@13
|
642 </section>
|
bgneal@13
|
643 </div>
|
bgneal@13
|
644 <footer>
|
bgneal@13
|
645
|
bgneal@13
|
646 <aside class="source">
|
bgneal@13
|
647 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
648 </aside>
|
bgneal@13
|
649
|
bgneal@13
|
650 <aside class="page_number">
|
bgneal@13
|
651 16/33
|
bgneal@13
|
652 </aside>
|
bgneal@13
|
653 </footer>
|
bgneal@13
|
654 </div>
|
bgneal@13
|
655 </div>
|
bgneal@13
|
656
|
bgneal@13
|
657 <!-- slide source: slides.rst -->
|
bgneal@13
|
658 <div class="slide-wrapper">
|
bgneal@13
|
659 <div class="slide">
|
bgneal@13
|
660 <div class="inner">
|
bgneal@13
|
661
|
bgneal@13
|
662 <header><h1>Easier Merging</h1></header>
|
bgneal@13
|
663
|
bgneal@13
|
664
|
bgneal@13
|
665 <section><ul class="simple">
|
bgneal@13
|
666 <li>Subversion has a bad reputation for merging<ul>
|
bgneal@13
|
667 <li>Some of this is not warranted...<ul>
|
bgneal@13
|
668 <li>Merge tracking was added in SVN v1.5</li>
|
bgneal@13
|
669 </ul>
|
bgneal@13
|
670 </li>
|
bgneal@13
|
671 <li>SVN does not handle file renames and tree conflicts very well</li>
|
bgneal@13
|
672 <li>A lot of teams simply avoid merging out of fear</li>
|
bgneal@13
|
673 </ul>
|
bgneal@13
|
674 </li>
|
bgneal@13
|
675 </ul></section>
|
bgneal@13
|
676
|
bgneal@13
|
677 </div>
|
bgneal@13
|
678 <div class="presenter_notes">
|
bgneal@13
|
679 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
680 <section>
|
bgneal@13
|
681
|
bgneal@13
|
682 </section>
|
bgneal@13
|
683 </div>
|
bgneal@13
|
684 <footer>
|
bgneal@13
|
685
|
bgneal@13
|
686 <aside class="source">
|
bgneal@13
|
687 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
688 </aside>
|
bgneal@13
|
689
|
bgneal@13
|
690 <aside class="page_number">
|
bgneal@13
|
691 17/33
|
bgneal@13
|
692 </aside>
|
bgneal@13
|
693 </footer>
|
bgneal@13
|
694 </div>
|
bgneal@13
|
695 </div>
|
bgneal@13
|
696
|
bgneal@13
|
697 <!-- slide source: slides.rst -->
|
bgneal@13
|
698 <div class="slide-wrapper">
|
bgneal@13
|
699 <div class="slide">
|
bgneal@13
|
700 <div class="inner">
|
bgneal@13
|
701
|
bgneal@13
|
702 <header><h1>Easier Merging (cont.)</h1></header>
|
bgneal@13
|
703
|
bgneal@13
|
704
|
bgneal@13
|
705 <section><ul class="simple">
|
bgneal@13
|
706 <li>Why is merging better in a DVCS?<ul>
|
bgneal@13
|
707 <li>Merging simply has to work correctly and be easy in a DVCS<ul>
|
bgneal@13
|
708 <li>More attention was paid to this aspect by DVCS's</li>
|
bgneal@13
|
709 </ul>
|
bgneal@13
|
710 </li>
|
bgneal@13
|
711 <li>DVCS's use directed acyclic graphs internally to represent change sets<ul>
|
bgneal@13
|
712 <li>More information is available to make merge decisions</li>
|
bgneal@13
|
713 <li>Easier to find common ancestors of code</li>
|
bgneal@13
|
714 </ul>
|
bgneal@13
|
715 </li>
|
bgneal@13
|
716 <li>Developer changes and merge changes are separate<ul>
|
bgneal@13
|
717 <li>"Commit before merge"</li>
|
bgneal@13
|
718 </ul>
|
bgneal@13
|
719 </li>
|
bgneal@13
|
720 </ul>
|
bgneal@13
|
721 </li>
|
bgneal@13
|
722 </ul></section>
|
bgneal@13
|
723
|
bgneal@13
|
724 </div>
|
bgneal@13
|
725 <div class="presenter_notes">
|
bgneal@13
|
726 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
727 <section>
|
bgneal@13
|
728
|
bgneal@13
|
729 </section>
|
bgneal@13
|
730 </div>
|
bgneal@13
|
731 <footer>
|
bgneal@13
|
732
|
bgneal@13
|
733 <aside class="source">
|
bgneal@13
|
734 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
735 </aside>
|
bgneal@13
|
736
|
bgneal@13
|
737 <aside class="page_number">
|
bgneal@13
|
738 18/33
|
bgneal@13
|
739 </aside>
|
bgneal@13
|
740 </footer>
|
bgneal@13
|
741 </div>
|
bgneal@13
|
742 </div>
|
bgneal@13
|
743
|
bgneal@13
|
744 <!-- slide source: slides.rst -->
|
bgneal@13
|
745 <div class="slide-wrapper">
|
bgneal@13
|
746 <div class="slide">
|
bgneal@13
|
747 <div class="inner">
|
bgneal@13
|
748
|
bgneal@13
|
749 <header><h1>Commit Before Merge</h1></header>
|
bgneal@13
|
750
|
bgneal@13
|
751
|
bgneal@13
|
752 <section><ul class="simple">
|
bgneal@13
|
753 <li>With a CVCS:<ul>
|
bgneal@13
|
754 <li>You make changes in your working copy</li>
|
bgneal@13
|
755 <li>Before you can commit, you often must peform an update<ul>
|
bgneal@13
|
756 <li>This may trigger a merge</li>
|
bgneal@13
|
757 <li>Your changes are now mixed up with your friendly coworkers' changes</li>
|
bgneal@13
|
758 <li>Sometimes this can be a problem...</li>
|
bgneal@13
|
759 </ul>
|
bgneal@13
|
760 </li>
|
bgneal@13
|
761 </ul>
|
bgneal@13
|
762 </li>
|
bgneal@13
|
763 <li>With a DVCS:<ul>
|
bgneal@13
|
764 <li>You make changes in your working copy</li>
|
bgneal@13
|
765 <li>You commit locally!</li>
|
bgneal@13
|
766 <li>You can then choose to pull changes from others and merge<ul>
|
bgneal@13
|
767 <li><strong>Your changes are already safely tucked away and can be retrieved later if things go wrong</strong></li>
|
bgneal@13
|
768 </ul>
|
bgneal@13
|
769 </li>
|
bgneal@13
|
770 </ul>
|
bgneal@13
|
771 </li>
|
bgneal@13
|
772 </ul></section>
|
bgneal@13
|
773
|
bgneal@13
|
774 </div>
|
bgneal@13
|
775 <div class="presenter_notes">
|
bgneal@13
|
776 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
777 <section>
|
bgneal@13
|
778
|
bgneal@13
|
779 </section>
|
bgneal@13
|
780 </div>
|
bgneal@13
|
781 <footer>
|
bgneal@13
|
782
|
bgneal@13
|
783 <aside class="source">
|
bgneal@13
|
784 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
785 </aside>
|
bgneal@13
|
786
|
bgneal@13
|
787 <aside class="page_number">
|
bgneal@13
|
788 19/33
|
bgneal@13
|
789 </aside>
|
bgneal@13
|
790 </footer>
|
bgneal@13
|
791 </div>
|
bgneal@13
|
792 </div>
|
bgneal@13
|
793
|
bgneal@13
|
794 <!-- slide source: slides.rst -->
|
bgneal@13
|
795 <div class="slide-wrapper">
|
bgneal@13
|
796 <div class="slide">
|
bgneal@13
|
797 <div class="inner">
|
bgneal@13
|
798
|
bgneal@13
|
799 <header><h1>Okay, what's the catch?</h1></header>
|
bgneal@13
|
800
|
bgneal@13
|
801
|
bgneal@13
|
802 <section><h2>Potential drawbacks to a DVCS</h2>
|
bgneal@13
|
803 <ul class="simple">
|
bgneal@13
|
804 <li>Practically no support for locks<ul>
|
bgneal@13
|
805 <li>This makes working with binary files difficult in a team environment</li>
|
bgneal@13
|
806 </ul>
|
bgneal@13
|
807 </li>
|
bgneal@13
|
808 <li>Huge repositories are not practical</li>
|
bgneal@13
|
809 <li>Hetrogenous repositories are not practical<ul>
|
bgneal@13
|
810 <li>Not a good idea to mix, say, software, systems, and firmware in the same repo</li>
|
bgneal@13
|
811 <li>Not a good idea to mix multiple products in the same repo</li>
|
bgneal@13
|
812 <li>Arguably, this applies to a CVCS as well</li>
|
bgneal@13
|
813 </ul>
|
bgneal@13
|
814 </li>
|
bgneal@13
|
815 <li>No support for path-based access control<ul>
|
bgneal@13
|
816 <li>With current tools, you either can access the full repo, or nothing</li>
|
bgneal@13
|
817 </ul>
|
bgneal@13
|
818 </li>
|
bgneal@13
|
819 </ul></section>
|
bgneal@13
|
820
|
bgneal@13
|
821 </div>
|
bgneal@13
|
822 <div class="presenter_notes">
|
bgneal@13
|
823 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
824 <section>
|
bgneal@13
|
825
|
bgneal@13
|
826 </section>
|
bgneal@13
|
827 </div>
|
bgneal@13
|
828 <footer>
|
bgneal@13
|
829
|
bgneal@13
|
830 <aside class="source">
|
bgneal@13
|
831 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
832 </aside>
|
bgneal@13
|
833
|
bgneal@13
|
834 <aside class="page_number">
|
bgneal@13
|
835 20/33
|
bgneal@13
|
836 </aside>
|
bgneal@13
|
837 </footer>
|
bgneal@13
|
838 </div>
|
bgneal@13
|
839 </div>
|
bgneal@13
|
840
|
bgneal@13
|
841 <!-- slide source: slides.rst -->
|
bgneal@13
|
842 <div class="slide-wrapper">
|
bgneal@13
|
843 <div class="slide">
|
bgneal@13
|
844 <div class="inner">
|
bgneal@13
|
845
|
bgneal@13
|
846 <header><h1>Introduction to Mercurial</h1></header>
|
bgneal@13
|
847
|
bgneal@13
|
848
|
bgneal@13
|
849 <section><ul class="simple">
|
bgneal@13
|
850 <li>Overview</li>
|
bgneal@13
|
851 <li>Repositories & working directories</li>
|
bgneal@13
|
852 <li>Changesets</li>
|
bgneal@13
|
853 <li>Branches & Tags</li>
|
bgneal@13
|
854 <li>Example workflow</li>
|
bgneal@13
|
855 <li>Command overview</li>
|
bgneal@13
|
856 </ul></section>
|
bgneal@13
|
857
|
bgneal@13
|
858 </div>
|
bgneal@13
|
859 <div class="presenter_notes">
|
bgneal@13
|
860 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
861 <section>
|
bgneal@13
|
862
|
bgneal@13
|
863 </section>
|
bgneal@13
|
864 </div>
|
bgneal@13
|
865 <footer>
|
bgneal@13
|
866
|
bgneal@13
|
867 <aside class="source">
|
bgneal@13
|
868 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
869 </aside>
|
bgneal@13
|
870
|
bgneal@13
|
871 <aside class="page_number">
|
bgneal@13
|
872 21/33
|
bgneal@13
|
873 </aside>
|
bgneal@13
|
874 </footer>
|
bgneal@13
|
875 </div>
|
bgneal@13
|
876 </div>
|
bgneal@13
|
877
|
bgneal@13
|
878 <!-- slide source: slides.rst -->
|
bgneal@13
|
879 <div class="slide-wrapper">
|
bgneal@13
|
880 <div class="slide">
|
bgneal@13
|
881 <div class="inner">
|
bgneal@13
|
882
|
bgneal@13
|
883 <header><h1>Mercurial Overview</h1></header>
|
bgneal@13
|
884
|
bgneal@13
|
885
|
bgneal@13
|
886 <section><ul class="simple">
|
bgneal@13
|
887 <li>Distributed Version Control System</li>
|
bgneal@13
|
888 <li>Free, open source software licensed under GPL Version 2</li>
|
bgneal@13
|
889 <li>Available for Microsoft Windows, GNU/Linux, Mac OS X, Solaris 11 Express</li>
|
bgneal@13
|
890 <li>Written in Python with a small amount of C</li>
|
bgneal@13
|
891 <li>Extensible with official and 3rd party extensions</li>
|
bgneal@13
|
892 <li>TortoiseHg is a popular GUI for Windows</li>
|
bgneal@13
|
893 <li>Reputation for being fast & easy to get started with</li>
|
bgneal@13
|
894 <li>Can be served via Apache Web server</li>
|
bgneal@13
|
895 <li>Repository hooks</li>
|
bgneal@13
|
896 <li>Integrates with Trac</li>
|
bgneal@13
|
897 <li>Can import history from other tools, including Subversion</li>
|
bgneal@13
|
898 </ul></section>
|
bgneal@13
|
899
|
bgneal@13
|
900 </div>
|
bgneal@13
|
901 <div class="presenter_notes">
|
bgneal@13
|
902 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
903 <section>
|
bgneal@13
|
904
|
bgneal@13
|
905 </section>
|
bgneal@13
|
906 </div>
|
bgneal@13
|
907 <footer>
|
bgneal@13
|
908
|
bgneal@13
|
909 <aside class="source">
|
bgneal@13
|
910 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
911 </aside>
|
bgneal@13
|
912
|
bgneal@13
|
913 <aside class="page_number">
|
bgneal@13
|
914 22/33
|
bgneal@13
|
915 </aside>
|
bgneal@13
|
916 </footer>
|
bgneal@13
|
917 </div>
|
bgneal@13
|
918 </div>
|
bgneal@13
|
919
|
bgneal@13
|
920 <!-- slide source: slides.rst -->
|
bgneal@13
|
921 <div class="slide-wrapper">
|
bgneal@13
|
922 <div class="slide">
|
bgneal@13
|
923 <div class="inner">
|
bgneal@13
|
924
|
bgneal@13
|
925 <header><h1>Repositories & Working Directories</h1></header>
|
bgneal@13
|
926
|
bgneal@13
|
927
|
bgneal@13
|
928 <section><p>A repository consists of two things:</p>
|
bgneal@13
|
929 <ul class="simple">
|
bgneal@13
|
930 <li>Your working directory (similar to a working copy in SVN)</li>
|
bgneal@13
|
931 <li>The repository itself (also known as "the store")<ul>
|
bgneal@13
|
932 <li>A .hg directory at the top of your working copy</li>
|
bgneal@13
|
933 </ul>
|
bgneal@13
|
934 </li>
|
bgneal@13
|
935 </ul>
|
bgneal@13
|
936 <p>Example:</p>
|
bgneal@13
|
937 <pre class="literal-block">
|
bgneal@13
|
938 $ ls -A
|
bgneal@13
|
939 .hg .hgignore images/ slides.cfg slides.css slides.html slides.rst
|
bgneal@13
|
940 </pre>
|
bgneal@13
|
941 <ul class="simple">
|
bgneal@13
|
942 <li>Repositories communicate via the <em>push</em> and <em>pull</em> commands<ul>
|
bgneal@13
|
943 <li>Push & Pull do not affect your working directory<ul>
|
bgneal@13
|
944 <li>An <em>update</em> or <em>merge</em> must be performed to receive remote changes into your working directory</li>
|
bgneal@13
|
945 </ul>
|
bgneal@13
|
946 </li>
|
bgneal@13
|
947 </ul>
|
bgneal@13
|
948 </li>
|
bgneal@13
|
949 </ul></section>
|
bgneal@13
|
950
|
bgneal@13
|
951 </div>
|
bgneal@13
|
952 <div class="presenter_notes">
|
bgneal@13
|
953 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
954 <section>
|
bgneal@13
|
955
|
bgneal@13
|
956 </section>
|
bgneal@13
|
957 </div>
|
bgneal@13
|
958 <footer>
|
bgneal@13
|
959
|
bgneal@13
|
960 <aside class="source">
|
bgneal@13
|
961 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
962 </aside>
|
bgneal@13
|
963
|
bgneal@13
|
964 <aside class="page_number">
|
bgneal@13
|
965 23/33
|
bgneal@13
|
966 </aside>
|
bgneal@13
|
967 </footer>
|
bgneal@13
|
968 </div>
|
bgneal@13
|
969 </div>
|
bgneal@13
|
970
|
bgneal@13
|
971 <!-- slide source: slides.rst -->
|
bgneal@13
|
972 <div class="slide-wrapper">
|
bgneal@13
|
973 <div class="slide">
|
bgneal@13
|
974 <div class="inner">
|
bgneal@13
|
975
|
bgneal@13
|
976 <header><h1>What's in a Repository?</h1></header>
|
bgneal@13
|
977
|
bgneal@13
|
978
|
bgneal@13
|
979 <section><p>A repository consists of a directed, acyclic graph of <em>changesets</em></p>
|
bgneal@13
|
980 <img alt="images/repos.png" src="images/repos.png" />
|
bgneal@13
|
981 <ul class="simple">
|
bgneal@13
|
982 <li>Each changeset can have 0, 1, or 2 parents (and infinite children)</li>
|
bgneal@13
|
983 <li>A changeset with 0 parents is the root</li>
|
bgneal@13
|
984 <li>A changeset with 2 parents is the result of a merge</li>
|
bgneal@13
|
985 <li>The newest changeset is called the <em>tip</em>, a special tag name</li>
|
bgneal@13
|
986 </ul></section>
|
bgneal@13
|
987
|
bgneal@13
|
988 </div>
|
bgneal@13
|
989 <div class="presenter_notes">
|
bgneal@13
|
990 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
991 <section>
|
bgneal@13
|
992
|
bgneal@13
|
993 </section>
|
bgneal@13
|
994 </div>
|
bgneal@13
|
995 <footer>
|
bgneal@13
|
996
|
bgneal@13
|
997 <aside class="source">
|
bgneal@13
|
998 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
999 </aside>
|
bgneal@13
|
1000
|
bgneal@13
|
1001 <aside class="page_number">
|
bgneal@13
|
1002 24/33
|
bgneal@13
|
1003 </aside>
|
bgneal@13
|
1004 </footer>
|
bgneal@13
|
1005 </div>
|
bgneal@13
|
1006 </div>
|
bgneal@13
|
1007
|
bgneal@13
|
1008 <!-- slide source: slides.rst -->
|
bgneal@13
|
1009 <div class="slide-wrapper">
|
bgneal@13
|
1010 <div class="slide">
|
bgneal@13
|
1011 <div class="inner">
|
bgneal@13
|
1012
|
bgneal@13
|
1013 <header><h1>What's a Changeset?</h1></header>
|
bgneal@13
|
1014
|
bgneal@13
|
1015
|
bgneal@13
|
1016 <section><p>A changeset is an atomic collection of changes and some meta information.
|
bgneal@13
|
1017 The meta information includes:</p>
|
bgneal@13
|
1018 <ul class="simple">
|
bgneal@13
|
1019 <li>Who made the changes</li>
|
bgneal@13
|
1020 <li>When the changes were made</li>
|
bgneal@13
|
1021 <li>Why - the commit message</li>
|
bgneal@13
|
1022 <li>The name of the branch the changes were made on ("default" is the default)</li>
|
bgneal@13
|
1023 <li>A local revision number</li>
|
bgneal@13
|
1024 <li>A changeset ID; a 40 digit hex number (SHA-1 hash of the changeset & parents)</li>
|
bgneal@13
|
1025 </ul>
|
bgneal@13
|
1026 <p>A changeset can be named by:</p>
|
bgneal@13
|
1027 <ul class="simple">
|
bgneal@13
|
1028 <li>Revision number (within a repository)</li>
|
bgneal@13
|
1029 <li>Changeset ID (globally)</li>
|
bgneal@13
|
1030 <li>Tag name</li>
|
bgneal@13
|
1031 </ul></section>
|
bgneal@13
|
1032
|
bgneal@13
|
1033 </div>
|
bgneal@13
|
1034 <div class="presenter_notes">
|
bgneal@13
|
1035 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1036 <section>
|
bgneal@13
|
1037
|
bgneal@13
|
1038 </section>
|
bgneal@13
|
1039 </div>
|
bgneal@13
|
1040 <footer>
|
bgneal@13
|
1041
|
bgneal@13
|
1042 <aside class="source">
|
bgneal@13
|
1043 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1044 </aside>
|
bgneal@13
|
1045
|
bgneal@13
|
1046 <aside class="page_number">
|
bgneal@13
|
1047 25/33
|
bgneal@13
|
1048 </aside>
|
bgneal@13
|
1049 </footer>
|
bgneal@13
|
1050 </div>
|
bgneal@13
|
1051 </div>
|
bgneal@13
|
1052
|
bgneal@13
|
1053 <!-- slide source: slides.rst -->
|
bgneal@13
|
1054 <div class="slide-wrapper">
|
bgneal@13
|
1055 <div class="slide">
|
bgneal@13
|
1056 <div class="inner">
|
bgneal@13
|
1057
|
bgneal@13
|
1058 <header><h1>Branches & Tags</h1></header>
|
bgneal@13
|
1059
|
bgneal@13
|
1060
|
bgneal@13
|
1061 <section><ul class="simple">
|
bgneal@13
|
1062 <li>In the simple case, each changeset appear in a line</li>
|
bgneal@13
|
1063 <li>When a changeset develops 2 or more children, a branch occurs<ul>
|
bgneal@13
|
1064 <li>The latest revision of a branch is called a <em>head</em></li>
|
bgneal@13
|
1065 <li>A <em>merge</em> is when two branches join back together</li>
|
bgneal@13
|
1066 <li>Branches can be given names; the default branch name is <em>"default"</em></li>
|
bgneal@13
|
1067 </ul>
|
bgneal@13
|
1068 </li>
|
bgneal@13
|
1069 <li>Changesets can be given human readable names, or <em>tags</em><ul>
|
bgneal@13
|
1070 <li><em>Local tags</em> are only visible within a repository</li>
|
bgneal@13
|
1071 <li><em>Regular tags</em> are revision controlled and propagate to other repos</li>
|
bgneal@13
|
1072 <li>The newest head in a repository is a tag called <em>tip</em></li>
|
bgneal@13
|
1073 </ul>
|
bgneal@13
|
1074 </li>
|
bgneal@13
|
1075 </ul></section>
|
bgneal@13
|
1076
|
bgneal@13
|
1077 </div>
|
bgneal@13
|
1078 <div class="presenter_notes">
|
bgneal@13
|
1079 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1080 <section>
|
bgneal@13
|
1081
|
bgneal@13
|
1082 </section>
|
bgneal@13
|
1083 </div>
|
bgneal@13
|
1084 <footer>
|
bgneal@13
|
1085
|
bgneal@13
|
1086 <aside class="source">
|
bgneal@13
|
1087 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1088 </aside>
|
bgneal@13
|
1089
|
bgneal@13
|
1090 <aside class="page_number">
|
bgneal@13
|
1091 26/33
|
bgneal@13
|
1092 </aside>
|
bgneal@13
|
1093 </footer>
|
bgneal@13
|
1094 </div>
|
bgneal@13
|
1095 </div>
|
bgneal@13
|
1096
|
bgneal@13
|
1097 <!-- slide source: slides.rst -->
|
bgneal@13
|
1098 <div class="slide-wrapper">
|
bgneal@13
|
1099 <div class="slide">
|
bgneal@13
|
1100 <div class="inner">
|
bgneal@13
|
1101
|
bgneal@13
|
1102 <header><h1>Example Workflow</h1></header>
|
bgneal@13
|
1103
|
bgneal@13
|
1104
|
bgneal@13
|
1105 <section><img alt="images/workflow1.png" src="images/workflow1.png" /></section>
|
bgneal@13
|
1106
|
bgneal@13
|
1107 </div>
|
bgneal@13
|
1108 <div class="presenter_notes">
|
bgneal@13
|
1109 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1110 <section>
|
bgneal@13
|
1111
|
bgneal@13
|
1112 </section>
|
bgneal@13
|
1113 </div>
|
bgneal@13
|
1114 <footer>
|
bgneal@13
|
1115
|
bgneal@13
|
1116 <aside class="source">
|
bgneal@13
|
1117 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1118 </aside>
|
bgneal@13
|
1119
|
bgneal@13
|
1120 <aside class="page_number">
|
bgneal@13
|
1121 27/33
|
bgneal@13
|
1122 </aside>
|
bgneal@13
|
1123 </footer>
|
bgneal@13
|
1124 </div>
|
bgneal@13
|
1125 </div>
|
bgneal@13
|
1126
|
bgneal@13
|
1127 <!-- slide source: slides.rst -->
|
bgneal@13
|
1128 <div class="slide-wrapper">
|
bgneal@13
|
1129 <div class="slide">
|
bgneal@13
|
1130 <div class="inner">
|
bgneal@13
|
1131
|
bgneal@13
|
1132 <header><h1>Example Workflow (cont.)</h1></header>
|
bgneal@13
|
1133
|
bgneal@13
|
1134
|
bgneal@13
|
1135 <section><img alt="images/workflow2.png" src="images/workflow2.png" /></section>
|
bgneal@13
|
1136
|
bgneal@13
|
1137 </div>
|
bgneal@13
|
1138 <div class="presenter_notes">
|
bgneal@13
|
1139 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1140 <section>
|
bgneal@13
|
1141
|
bgneal@13
|
1142 </section>
|
bgneal@13
|
1143 </div>
|
bgneal@13
|
1144 <footer>
|
bgneal@13
|
1145
|
bgneal@13
|
1146 <aside class="source">
|
bgneal@13
|
1147 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1148 </aside>
|
bgneal@13
|
1149
|
bgneal@13
|
1150 <aside class="page_number">
|
bgneal@13
|
1151 28/33
|
bgneal@13
|
1152 </aside>
|
bgneal@13
|
1153 </footer>
|
bgneal@13
|
1154 </div>
|
bgneal@13
|
1155 </div>
|
bgneal@13
|
1156
|
bgneal@13
|
1157 <!-- slide source: slides.rst -->
|
bgneal@13
|
1158 <div class="slide-wrapper">
|
bgneal@13
|
1159 <div class="slide">
|
bgneal@13
|
1160 <div class="inner">
|
bgneal@13
|
1161
|
bgneal@13
|
1162 <header><h1>Example Workflow (cont.)</h1></header>
|
bgneal@13
|
1163
|
bgneal@13
|
1164
|
bgneal@13
|
1165 <section><img alt="images/workflow3.png" src="images/workflow3.png" />
|
bgneal@13
|
1166 <ul class="simple">
|
bgneal@13
|
1167 <li>Notice that after Alice's pull:<ul>
|
bgneal@13
|
1168 <li>Her working directory is unaffected</li>
|
bgneal@13
|
1169 <li>Her repository only has one head => no merging required</li>
|
bgneal@13
|
1170 </ul>
|
bgneal@13
|
1171 </li>
|
bgneal@13
|
1172 </ul></section>
|
bgneal@13
|
1173
|
bgneal@13
|
1174 </div>
|
bgneal@13
|
1175 <div class="presenter_notes">
|
bgneal@13
|
1176 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1177 <section>
|
bgneal@13
|
1178
|
bgneal@13
|
1179 </section>
|
bgneal@13
|
1180 </div>
|
bgneal@13
|
1181 <footer>
|
bgneal@13
|
1182
|
bgneal@13
|
1183 <aside class="source">
|
bgneal@13
|
1184 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1185 </aside>
|
bgneal@13
|
1186
|
bgneal@13
|
1187 <aside class="page_number">
|
bgneal@13
|
1188 29/33
|
bgneal@13
|
1189 </aside>
|
bgneal@13
|
1190 </footer>
|
bgneal@13
|
1191 </div>
|
bgneal@13
|
1192 </div>
|
bgneal@13
|
1193
|
bgneal@13
|
1194 <!-- slide source: slides.rst -->
|
bgneal@13
|
1195 <div class="slide-wrapper">
|
bgneal@13
|
1196 <div class="slide">
|
bgneal@13
|
1197 <div class="inner">
|
bgneal@13
|
1198
|
bgneal@13
|
1199 <header><h1>SVN Commands for Review</h1></header>
|
bgneal@13
|
1200
|
bgneal@13
|
1201
|
bgneal@13
|
1202 <section><p>Basic SVN commands:</p>
|
bgneal@13
|
1203 <ul class="simple">
|
bgneal@13
|
1204 <li>add, remove, copy, move, mkdir</li>
|
bgneal@13
|
1205 <li>checkout, commit, update, revert</li>
|
bgneal@13
|
1206 <li>merge, resolved, diff</li>
|
bgneal@13
|
1207 <li>status, log</li>
|
bgneal@13
|
1208 <li>lock, unlock</li>
|
bgneal@13
|
1209 </ul></section>
|
bgneal@13
|
1210
|
bgneal@13
|
1211 </div>
|
bgneal@13
|
1212 <div class="presenter_notes">
|
bgneal@13
|
1213 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1214 <section>
|
bgneal@13
|
1215
|
bgneal@13
|
1216 </section>
|
bgneal@13
|
1217 </div>
|
bgneal@13
|
1218 <footer>
|
bgneal@13
|
1219
|
bgneal@13
|
1220 <aside class="source">
|
bgneal@13
|
1221 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1222 </aside>
|
bgneal@13
|
1223
|
bgneal@13
|
1224 <aside class="page_number">
|
bgneal@13
|
1225 30/33
|
bgneal@13
|
1226 </aside>
|
bgneal@13
|
1227 </footer>
|
bgneal@13
|
1228 </div>
|
bgneal@13
|
1229 </div>
|
bgneal@13
|
1230
|
bgneal@13
|
1231 <!-- slide source: slides.rst -->
|
bgneal@13
|
1232 <div class="slide-wrapper">
|
bgneal@13
|
1233 <div class="slide">
|
bgneal@13
|
1234 <div class="inner">
|
bgneal@13
|
1235
|
bgneal@13
|
1236 <header><h1>Basic Mercurial Commands</h1></header>
|
bgneal@13
|
1237
|
bgneal@13
|
1238
|
bgneal@13
|
1239 <section><p>Mercurial (hg) vs SVN commands:</p>
|
bgneal@13
|
1240 <ul class="simple">
|
bgneal@13
|
1241 <li>add, remove, copy, move, <span class="strike">mkdir</span></li>
|
bgneal@13
|
1242 <li><span class="strike">checkout</span>, commit, update, revert</li>
|
bgneal@13
|
1243 <li>merge, resolve, diff, <strong>heads</strong></li>
|
bgneal@13
|
1244 <li>status, log</li>
|
bgneal@13
|
1245 <li><span class="strike">lock, unlock</span></li>
|
bgneal@13
|
1246 </ul>
|
bgneal@13
|
1247 <p>Additional "distributed commands":</p>
|
bgneal@13
|
1248 <ul class="simple">
|
bgneal@13
|
1249 <li><strong>clone</strong>, <strong>push</strong>, <strong>pull</strong></li>
|
bgneal@13
|
1250 <li><strong>incoming</strong>, <strong>outgoing</strong></li>
|
bgneal@13
|
1251 </ul>
|
bgneal@13
|
1252 <p><strong>Not a whole lot to learn above SVN</strong></p></section>
|
bgneal@13
|
1253
|
bgneal@13
|
1254 </div>
|
bgneal@13
|
1255 <div class="presenter_notes">
|
bgneal@13
|
1256 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1257 <section>
|
bgneal@13
|
1258
|
bgneal@13
|
1259 </section>
|
bgneal@13
|
1260 </div>
|
bgneal@13
|
1261 <footer>
|
bgneal@13
|
1262
|
bgneal@13
|
1263 <aside class="source">
|
bgneal@13
|
1264 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1265 </aside>
|
bgneal@13
|
1266
|
bgneal@13
|
1267 <aside class="page_number">
|
bgneal@13
|
1268 31/33
|
bgneal@13
|
1269 </aside>
|
bgneal@13
|
1270 </footer>
|
bgneal@13
|
1271 </div>
|
bgneal@13
|
1272 </div>
|
bgneal@13
|
1273
|
bgneal@13
|
1274 <!-- slide source: slides.rst -->
|
bgneal@13
|
1275 <div class="slide-wrapper">
|
bgneal@13
|
1276 <div class="slide">
|
bgneal@13
|
1277 <div class="inner">
|
bgneal@13
|
1278
|
bgneal@13
|
1279 <header><h1>References</h1></header>
|
bgneal@13
|
1280
|
bgneal@13
|
1281
|
bgneal@13
|
1282 <section><ul class="simple">
|
bgneal@13
|
1283 <li>Mercurial <a class="reference external" href="http://mercurial.selenic.com/">http://mercurial.selenic.com/</a></li>
|
bgneal@13
|
1284 <li>Mercurial Wiki <a class="reference external" href="http://mercurial.selenic.com/wiki/">http://mercurial.selenic.com/wiki/</a></li>
|
bgneal@13
|
1285 <li>Mercurial Book (free!) <a class="reference external" href="http://hgbook.red-bean.com/">http://hgbook.red-bean.com/</a></li>
|
bgneal@13
|
1286 <li>Hg Init: A Mercurial Tutorial <a class="reference external" href="http://hginit.com">http://hginit.com</a></li>
|
bgneal@13
|
1287 <li>Version Control By Example (free!) <a class="reference external" href="http://www.ericsink.com/vcbe/">http://www.ericsink.com/vcbe/</a></li>
|
bgneal@13
|
1288 </ul>
|
bgneal@13
|
1289 <p>This presentation is available at:</p>
|
bgneal@13
|
1290 <pre class="literal-block">
|
bgneal@13
|
1291 $ hg clone https://bitbucket.org/bgneal/dvcs_intro_brownbag
|
bgneal@13
|
1292 </pre></section>
|
bgneal@13
|
1293
|
bgneal@13
|
1294 </div>
|
bgneal@13
|
1295 <div class="presenter_notes">
|
bgneal@13
|
1296 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1297 <section>
|
bgneal@13
|
1298
|
bgneal@13
|
1299 </section>
|
bgneal@13
|
1300 </div>
|
bgneal@13
|
1301 <footer>
|
bgneal@13
|
1302
|
bgneal@13
|
1303 <aside class="source">
|
bgneal@13
|
1304 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1305 </aside>
|
bgneal@13
|
1306
|
bgneal@13
|
1307 <aside class="page_number">
|
bgneal@13
|
1308 32/33
|
bgneal@13
|
1309 </aside>
|
bgneal@13
|
1310 </footer>
|
bgneal@13
|
1311 </div>
|
bgneal@13
|
1312 </div>
|
bgneal@13
|
1313
|
bgneal@13
|
1314 <!-- slide source: slides.rst -->
|
bgneal@13
|
1315 <div class="slide-wrapper">
|
bgneal@13
|
1316 <div class="slide">
|
bgneal@13
|
1317 <div class="inner">
|
bgneal@13
|
1318
|
bgneal@13
|
1319 <header><h1>Questions?</h1></header>
|
bgneal@13
|
1320
|
bgneal@13
|
1321
|
bgneal@13
|
1322 </div>
|
bgneal@13
|
1323 <div class="presenter_notes">
|
bgneal@13
|
1324 <header><h1>Presenter Notes</h1></header>
|
bgneal@13
|
1325 <section>
|
bgneal@13
|
1326
|
bgneal@13
|
1327 </section>
|
bgneal@13
|
1328 </div>
|
bgneal@13
|
1329 <footer>
|
bgneal@13
|
1330
|
bgneal@13
|
1331 <aside class="source">
|
bgneal@13
|
1332 Source: <a href="slides.rst">slides.rst</a>
|
bgneal@13
|
1333 </aside>
|
bgneal@13
|
1334
|
bgneal@13
|
1335 <aside class="page_number">
|
bgneal@13
|
1336 33/33
|
bgneal@13
|
1337 </aside>
|
bgneal@13
|
1338 </footer>
|
bgneal@13
|
1339 </div>
|
bgneal@13
|
1340 </div>
|
bgneal@13
|
1341
|
bgneal@13
|
1342 </div>
|
bgneal@13
|
1343 </div>
|
bgneal@13
|
1344
|
bgneal@13
|
1345 <div id="toc" class="sidebar hidden">
|
bgneal@13
|
1346 <h2>Table of Contents</h2>
|
bgneal@13
|
1347 <table>
|
bgneal@13
|
1348 <caption>Table of Contents</caption>
|
bgneal@13
|
1349
|
bgneal@13
|
1350 <tr id="toc-row-1">
|
bgneal@13
|
1351 <th><a href="#slide1">Introduction to Distributed Version Control with Mercurial</a></th>
|
bgneal@13
|
1352 <td><a href="#slide1">1</a></td>
|
bgneal@13
|
1353 </tr>
|
bgneal@13
|
1354
|
bgneal@13
|
1355
|
bgneal@13
|
1356 <tr id="toc-row-2">
|
bgneal@13
|
1357 <th><a href="#slide2">(Subliminal Message)</a></th>
|
bgneal@13
|
1358 <td><a href="#slide2">2</a></td>
|
bgneal@13
|
1359 </tr>
|
bgneal@13
|
1360
|
bgneal@13
|
1361
|
bgneal@13
|
1362 <tr id="toc-row-3">
|
bgneal@13
|
1363 <th><a href="#slide3"># whoami</a></th>
|
bgneal@13
|
1364 <td><a href="#slide3">3</a></td>
|
bgneal@13
|
1365 </tr>
|
bgneal@13
|
1366
|
bgneal@13
|
1367
|
bgneal@13
|
1368 <tr id="toc-row-4">
|
bgneal@13
|
1369 <th><a href="#slide4">Brief History of Version Control Tools</a></th>
|
bgneal@13
|
1370 <td><a href="#slide4">4</a></td>
|
bgneal@13
|
1371 </tr>
|
bgneal@13
|
1372
|
bgneal@13
|
1373
|
bgneal@13
|
1374 <tr id="toc-row-5">
|
bgneal@13
|
1375 <th><a href="#slide5">Brief History of Version Control Tools</a></th>
|
bgneal@13
|
1376 <td><a href="#slide5">5</a></td>
|
bgneal@13
|
1377 </tr>
|
bgneal@13
|
1378
|
bgneal@13
|
1379
|
bgneal@13
|
1380 <tr id="toc-row-6">
|
bgneal@13
|
1381 <th><a href="#slide6">Brief History of Version Control Tools</a></th>
|
bgneal@13
|
1382 <td><a href="#slide6">6</a></td>
|
bgneal@13
|
1383 </tr>
|
bgneal@13
|
1384
|
bgneal@13
|
1385
|
bgneal@13
|
1386 <tr id="toc-row-7">
|
bgneal@13
|
1387 <th><a href="#slide7">What is a CVCS Again?</a></th>
|
bgneal@13
|
1388 <td><a href="#slide7">7</a></td>
|
bgneal@13
|
1389 </tr>
|
bgneal@13
|
1390
|
bgneal@13
|
1391
|
bgneal@13
|
1392 <tr id="toc-row-8">
|
bgneal@13
|
1393 <th><a href="#slide8">So what's a DVCS look like?</a></th>
|
bgneal@13
|
1394 <td><a href="#slide8">8</a></td>
|
bgneal@13
|
1395 </tr>
|
bgneal@13
|
1396
|
bgneal@13
|
1397
|
bgneal@13
|
1398 <tr id="toc-row-9">
|
bgneal@13
|
1399 <th><a href="#slide9">What does a DVCS buy you?</a></th>
|
bgneal@13
|
1400 <td><a href="#slide9">9</a></td>
|
bgneal@13
|
1401 </tr>
|
bgneal@13
|
1402
|
bgneal@13
|
1403
|
bgneal@13
|
1404 <tr id="toc-row-10">
|
bgneal@13
|
1405 <th><a href="#slide10">Private Workspaces</a></th>
|
bgneal@13
|
1406 <td><a href="#slide10">10</a></td>
|
bgneal@13
|
1407 </tr>
|
bgneal@13
|
1408
|
bgneal@13
|
1409
|
bgneal@13
|
1410 <tr id="toc-row-11">
|
bgneal@13
|
1411 <th><a href="#slide11">Offline Mode</a></th>
|
bgneal@13
|
1412 <td><a href="#slide11">11</a></td>
|
bgneal@13
|
1413 </tr>
|
bgneal@13
|
1414
|
bgneal@13
|
1415
|
bgneal@13
|
1416 <tr id="toc-row-12">
|
bgneal@13
|
1417 <th><a href="#slide12">Speed</a></th>
|
bgneal@13
|
1418 <td><a href="#slide12">12</a></td>
|
bgneal@13
|
1419 </tr>
|
bgneal@13
|
1420
|
bgneal@13
|
1421
|
bgneal@13
|
1422 <tr id="toc-row-13">
|
bgneal@13
|
1423 <th><a href="#slide13">Scalability</a></th>
|
bgneal@13
|
1424 <td><a href="#slide13">13</a></td>
|
bgneal@13
|
1425 </tr>
|
bgneal@13
|
1426
|
bgneal@13
|
1427
|
bgneal@13
|
1428 <tr id="toc-row-14">
|
bgneal@13
|
1429 <th><a href="#slide14">Split Geography</a></th>
|
bgneal@13
|
1430 <td><a href="#slide14">14</a></td>
|
bgneal@13
|
1431 </tr>
|
bgneal@13
|
1432
|
bgneal@13
|
1433
|
bgneal@13
|
1434 <tr id="toc-row-15">
|
bgneal@13
|
1435 <th><a href="#slide15">Flexible Workflows</a></th>
|
bgneal@13
|
1436 <td><a href="#slide15">15</a></td>
|
bgneal@13
|
1437 </tr>
|
bgneal@13
|
1438
|
bgneal@13
|
1439
|
bgneal@13
|
1440 <tr id="toc-row-16">
|
bgneal@13
|
1441 <th><a href="#slide16">Distributed Backups</a></th>
|
bgneal@13
|
1442 <td><a href="#slide16">16</a></td>
|
bgneal@13
|
1443 </tr>
|
bgneal@13
|
1444
|
bgneal@13
|
1445
|
bgneal@13
|
1446 <tr id="toc-row-17">
|
bgneal@13
|
1447 <th><a href="#slide17">Easier Merging</a></th>
|
bgneal@13
|
1448 <td><a href="#slide17">17</a></td>
|
bgneal@13
|
1449 </tr>
|
bgneal@13
|
1450
|
bgneal@13
|
1451
|
bgneal@13
|
1452 <tr id="toc-row-18">
|
bgneal@13
|
1453 <th><a href="#slide18">Easier Merging (cont.)</a></th>
|
bgneal@13
|
1454 <td><a href="#slide18">18</a></td>
|
bgneal@13
|
1455 </tr>
|
bgneal@13
|
1456
|
bgneal@13
|
1457
|
bgneal@13
|
1458 <tr id="toc-row-19">
|
bgneal@13
|
1459 <th><a href="#slide19">Commit Before Merge</a></th>
|
bgneal@13
|
1460 <td><a href="#slide19">19</a></td>
|
bgneal@13
|
1461 </tr>
|
bgneal@13
|
1462
|
bgneal@13
|
1463
|
bgneal@13
|
1464 <tr id="toc-row-20">
|
bgneal@13
|
1465 <th><a href="#slide20">Okay, what's the catch?</a></th>
|
bgneal@13
|
1466 <td><a href="#slide20">20</a></td>
|
bgneal@13
|
1467 </tr>
|
bgneal@13
|
1468
|
bgneal@13
|
1469
|
bgneal@13
|
1470 <tr id="toc-row-21">
|
bgneal@13
|
1471 <th><a href="#slide21">Introduction to Mercurial</a></th>
|
bgneal@13
|
1472 <td><a href="#slide21">21</a></td>
|
bgneal@13
|
1473 </tr>
|
bgneal@13
|
1474
|
bgneal@13
|
1475
|
bgneal@13
|
1476 <tr id="toc-row-22">
|
bgneal@13
|
1477 <th><a href="#slide22">Mercurial Overview</a></th>
|
bgneal@13
|
1478 <td><a href="#slide22">22</a></td>
|
bgneal@13
|
1479 </tr>
|
bgneal@13
|
1480
|
bgneal@13
|
1481
|
bgneal@13
|
1482 <tr id="toc-row-23">
|
bgneal@13
|
1483 <th><a href="#slide23">Repositories & Working Directories</a></th>
|
bgneal@13
|
1484 <td><a href="#slide23">23</a></td>
|
bgneal@13
|
1485 </tr>
|
bgneal@13
|
1486
|
bgneal@13
|
1487
|
bgneal@13
|
1488 <tr id="toc-row-24">
|
bgneal@13
|
1489 <th><a href="#slide24">What's in a Repository?</a></th>
|
bgneal@13
|
1490 <td><a href="#slide24">24</a></td>
|
bgneal@13
|
1491 </tr>
|
bgneal@13
|
1492
|
bgneal@13
|
1493
|
bgneal@13
|
1494 <tr id="toc-row-25">
|
bgneal@13
|
1495 <th><a href="#slide25">What's a Changeset?</a></th>
|
bgneal@13
|
1496 <td><a href="#slide25">25</a></td>
|
bgneal@13
|
1497 </tr>
|
bgneal@13
|
1498
|
bgneal@13
|
1499
|
bgneal@13
|
1500 <tr id="toc-row-26">
|
bgneal@13
|
1501 <th><a href="#slide26">Branches & Tags</a></th>
|
bgneal@13
|
1502 <td><a href="#slide26">26</a></td>
|
bgneal@13
|
1503 </tr>
|
bgneal@13
|
1504
|
bgneal@13
|
1505
|
bgneal@13
|
1506 <tr id="toc-row-27">
|
bgneal@13
|
1507 <th><a href="#slide27">Example Workflow</a></th>
|
bgneal@13
|
1508 <td><a href="#slide27">27</a></td>
|
bgneal@13
|
1509 </tr>
|
bgneal@13
|
1510
|
bgneal@13
|
1511
|
bgneal@13
|
1512 <tr id="toc-row-28">
|
bgneal@13
|
1513 <th><a href="#slide28">Example Workflow (cont.)</a></th>
|
bgneal@13
|
1514 <td><a href="#slide28">28</a></td>
|
bgneal@13
|
1515 </tr>
|
bgneal@13
|
1516
|
bgneal@13
|
1517
|
bgneal@13
|
1518 <tr id="toc-row-29">
|
bgneal@13
|
1519 <th><a href="#slide29">Example Workflow (cont.)</a></th>
|
bgneal@13
|
1520 <td><a href="#slide29">29</a></td>
|
bgneal@13
|
1521 </tr>
|
bgneal@13
|
1522
|
bgneal@13
|
1523
|
bgneal@13
|
1524 <tr id="toc-row-30">
|
bgneal@13
|
1525 <th><a href="#slide30">SVN Commands for Review</a></th>
|
bgneal@13
|
1526 <td><a href="#slide30">30</a></td>
|
bgneal@13
|
1527 </tr>
|
bgneal@13
|
1528
|
bgneal@13
|
1529
|
bgneal@13
|
1530 <tr id="toc-row-31">
|
bgneal@13
|
1531 <th><a href="#slide31">Basic Mercurial Commands</a></th>
|
bgneal@13
|
1532 <td><a href="#slide31">31</a></td>
|
bgneal@13
|
1533 </tr>
|
bgneal@13
|
1534
|
bgneal@13
|
1535
|
bgneal@13
|
1536 <tr id="toc-row-32">
|
bgneal@13
|
1537 <th><a href="#slide32">References</a></th>
|
bgneal@13
|
1538 <td><a href="#slide32">32</a></td>
|
bgneal@13
|
1539 </tr>
|
bgneal@13
|
1540
|
bgneal@13
|
1541
|
bgneal@13
|
1542 <tr id="toc-row-33">
|
bgneal@13
|
1543 <th><a href="#slide33">Questions?</a></th>
|
bgneal@13
|
1544 <td><a href="#slide33">33</a></td>
|
bgneal@13
|
1545 </tr>
|
bgneal@13
|
1546
|
bgneal@13
|
1547
|
bgneal@13
|
1548 </table>
|
bgneal@13
|
1549 </div>
|
bgneal@13
|
1550
|
bgneal@13
|
1551 <div id="help" class="sidebar hidden">
|
bgneal@13
|
1552 <h2>Help</h2>
|
bgneal@13
|
1553 <table>
|
bgneal@13
|
1554 <caption>Help</caption>
|
bgneal@13
|
1555 <tr>
|
bgneal@13
|
1556 <th>Table of Contents</th>
|
bgneal@13
|
1557 <td>t</td>
|
bgneal@13
|
1558 </tr>
|
bgneal@13
|
1559 <tr>
|
bgneal@13
|
1560 <th>Exposé</th>
|
bgneal@13
|
1561 <td>ESC</td>
|
bgneal@13
|
1562 </tr>
|
bgneal@13
|
1563 <tr>
|
bgneal@13
|
1564 <th>Full screen slides</th>
|
bgneal@13
|
1565 <td>e</td>
|
bgneal@13
|
1566 </tr>
|
bgneal@13
|
1567 <tr>
|
bgneal@13
|
1568 <th>Presenter View</th>
|
bgneal@13
|
1569 <td>p</td>
|
bgneal@13
|
1570 </tr>
|
bgneal@13
|
1571 <tr>
|
bgneal@13
|
1572 <th>Source Files</th>
|
bgneal@13
|
1573 <td>s</td>
|
bgneal@13
|
1574 </tr>
|
bgneal@13
|
1575 <tr>
|
bgneal@13
|
1576 <th>Slide Numbers</th>
|
bgneal@13
|
1577 <td>n</td>
|
bgneal@13
|
1578 </tr>
|
bgneal@13
|
1579 <tr>
|
bgneal@13
|
1580 <th>Toggle screen blanking</th>
|
bgneal@13
|
1581 <td>b</td>
|
bgneal@13
|
1582 </tr>
|
bgneal@13
|
1583 <tr>
|
bgneal@13
|
1584 <th>Show/hide slide context</th>
|
bgneal@13
|
1585 <td>c</td>
|
bgneal@13
|
1586 </tr>
|
bgneal@13
|
1587 <tr>
|
bgneal@13
|
1588 <th>Notes</th>
|
bgneal@13
|
1589 <td>2</td>
|
bgneal@13
|
1590 </tr>
|
bgneal@13
|
1591 <tr>
|
bgneal@13
|
1592 <th>Help</th>
|
bgneal@13
|
1593 <td>h</td>
|
bgneal@13
|
1594 </tr>
|
bgneal@13
|
1595 </table>
|
bgneal@13
|
1596 </div>
|
bgneal@13
|
1597 <script>main()</script>
|
bgneal@13
|
1598 </body>
|
bgneal@13
|
1599 </html> |