diff slides.rst @ 16:048e5aea6d36 tip

Updates for June 2012 presentation.
author Brian Neal <bgneal@gmail.com>
date Mon, 25 Jun 2012 19:51:34 -0500
parents 727c48601d66
children
line wrap: on
line diff
--- a/slides.rst	Mon Jun 25 18:50:42 2012 -0500
+++ b/slides.rst	Mon Jun 25 19:51:34 2012 -0500
@@ -6,10 +6,12 @@
 
 ----
 
-(Subliminal Message)
-====================
+Agenda
+======
 
-.. image:: images/stop.jpg
+- Brief history of version control tools
+- Features of distributed version control
+- Brief introduction to Mercurial
 
 ----
 
@@ -30,6 +32,36 @@
 
 ----
 
+Disclaimers
+===========
+
+- This is not a sales pitch
+- I actually :strike:`like` respect Subversion
+
+  - I'm the "Subversion guy" on my team
+  - I developed SVN training and have given it ~9-10 times
+  - http://subversion.tigris.org/issues/show_bug.cgi?id=3919
+
+- I am not an expert
+
+  - I'm probably making this look too easy
+
+----
+
+Why learn about DVCS?
+=====================
+
+- DVCS have exploded in the open source world
+
+  - Interestingly, Subversion is growing in corporate environments
+
+- Frustration with current tools
+- Interesting to see how the tools have evolved
+
+  - As a software practitioner, you should know what your options are
+
+----
+
 Brief History of Version Control Tools
 ======================================
 
@@ -157,7 +189,7 @@
 - Initial pull down of an entire repository *might* be slower than a CVCS
 
   - Then again, you might be surprised
-  - Mercurial, for example, stores an entire repository in less space than
+  - Mercurial, for example, stores an *entire* repository in less space than
     a SVN working copy in many cases
 
  
@@ -182,7 +214,7 @@
 - The remote location is stuck with network latency & associated problems
 - With a DVCS, each site can have a central repository
 
-  - The two central repos can be synched when convenient or even scripted
+  - The two central repos can be synch'ed when convenient or even scripted
  
 .. image:: images/split_geography.png
 
@@ -221,9 +253,10 @@
   - Some of this is not warranted...
 
     - Merge tracking was added in SVN v1.5
+    - Steadily improved in v1.6 - v1.7
 
   - SVN does not handle file renames and tree conflicts very well
-  - A lot of teams simply avoid merging out of fear
+  - A lot of teams simply avoid merging out of fear or superstition
 
 ----
 
@@ -236,7 +269,7 @@
 
     - More attention was paid to this aspect by DVCS's
 
-  - DVCS's use directed acyclic graphs internally to represent change sets
+  - DVCS's use **directed acyclic graphs** internally to represent change sets
 
     - More information is available to make merge decisions
     - Easier to find common ancestors of code
@@ -253,7 +286,7 @@
 - With a CVCS:
 
   - You make changes in your working copy
-  - Before you can commit, you often must peform an update
+  - Before you can commit, you often must perform an update
      
     - This may trigger a merge
     - Your changes are now mixed up with your friendly coworkers' changes
@@ -281,11 +314,11 @@
 
 - Huge repositories are not practical
 
-- Hetrogenous repositories are not practical
+- Heterogeneous repositories are not practical
 
   - Not a good idea to mix, say, software, systems, and firmware in the same repo
   - Not a good idea to mix multiple products in the same repo
-  - Arguably, this applies to a CVCS as well
+  - *Arguably, this applies to a CVCS as well*
 
 - No support for path-based access control
 
@@ -317,7 +350,7 @@
 - Reputation for being fast & easy to get started with
 - Can be served via Apache Web server
 - Repository hooks
-- Integrates with Trac
+- Integrates with the Trac issue tracker
 - Can import history from other tools, including Subversion
 
 ----
@@ -398,6 +431,48 @@
 
 ----
 
+A note on branching...
+======================
+
+- Branching happens *all the time* when multiple developers are involved
+- It is so natural you may not notice it at first
+- Branching often has two meanings:
+
+  - The "normal" day-to-day branching when developers combine changes
+  - The conceptual branching that occurs when:
+
+    - You need a feature branch
+    - You need a release branch
+    - You need an experimental branch
+    - etc.
+
+----
+
+Ways to Branch in Hg
+====================
+
+- Just make another clone of the repository!
+
+  - Slowest, safest, easiest to understand
+  - Hard links are used (where available) to minimize disk space
+
+- Bookmarks
+
+  - Lightweight tags can be applied to changesets
+  - Similar to how Git does branches
+  - Bookmarks can be deleted; they are not permanent
+
+- Named branches
+
+  - Actually recording the branch name in the changeset
+
+- Anonymous branches
+  
+  - Update to any old changeset, make changes, commit
+  - "Good" for emergency fixes, bad for remembering what you did
+
+----
+
 Example Workflow
 ================