annotate slides.html @ 16:048e5aea6d36 tip

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