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