Monday, March 02, 2009

Student's guide on using mercurial - Working outline

We are writing a student guide that will help first year students to deal with the concepts of Version Control Systems. We have chosen mercurial as the tool that we will use for our practical examples since we know how easy and powerful it is.

This user guide will help students from CS programs since at some point they have to deal with versioning control systems in some of their courses and later on when they reach the development world after graduation.

We believe that there is a knowledge gap in our school and learning the concepts and the tools as students will empower us to contribute in a better manner in school and in the real world.

Here is the working outline which we have divided into the theoretical concepts involved and the practical examples. We also see the need to help students not to depend on their schools' infrastructure by giving them tricks on different ways to set their own setups.

By the way, which discussion group would you suggest me to use if I want to ask how you guys use mercurial and how you manage your patches, merges and others?

Let's the learning begin!


  1. Introduction
    Introduce readers to purpose of paper
  2. What version control systems are
    Explain that they are used mainly for source code
    1. File locking and versions merging
      Explain the differences between them. We are going to explain the second one
    2. What a distributed VCS is
    3. Advantages over non-distributed
      Explain the advantages
  3. VCS concepts
    1. Versioning
    2. Diffs
    3. Patches - Reviews
    4. Branching
    5. Merging
  4. Use of VCS in school
    Find what are good reasons to for students to use it
    1. Assignments
      Many students have done collaboratively assignment without VCS
    2. Real world experience
      Explain why using VCS early as a student is helpful to the reality of developers

  1. Work on bugs - Lifecycle of a healthy patch
    Explain few scenarios from developers’ workflow
  2. Mozilla and Seneca’s workflow
    From our experience explain: bugzilla, review process, IRC, pastebin, commit privileges
  3. How to setup your own repositories
    Students should not rely on school to setup infrastructure for you
    1. Free services – github, assembla, Google code
      Explain few of the services available out in there for students to use
    2. Your own Mercurial repositories
      Show how to setup a mercurial repositories with different setups:
      1. on the spot
      2. using school servers
      3. using your home server
  4. Advance work/patch management – Mercurial queues
    This last section will be an external contributed section