annotate slides.html @ 15:70e53cce4ad0

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