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!
WORKING OUTLINE
SECTION 1 – THEORY PART
- Introduction
Introduce readers to purpose of paper - What version control systems are
Explain that they are used mainly for source code - File locking and versions merging
Explain the differences between them. We are going to explain the second one - What a distributed VCS is
Explanation - Advantages over non-distributed
Explain the advantages - VCS concepts
- Versioning
- Diffs
- Patches - Reviews
- Branching
- Merging
- Use of VCS in school
Find what are good reasons to for students to use it - Assignments
Many students have done collaboratively assignment without VCS - Real world experience
Explain why using VCS early as a student is helpful to the reality of developers
SECTION 2 – PRACTICAL PART
- Work on bugs - Lifecycle of a healthy patch
Explain few scenarios from developers’ workflow - Mozilla and Seneca’s workflow
From our experience explain: bugzilla, review process, IRC, pastebin, commit privileges - How to setup your own repositories
Students should not rely on school to setup infrastructure for you - Free services – github, assembla, Google code
Explain few of the services available out in there for students to use - Your own Mercurial repositories
Show how to setup a mercurial repositories with different setups: - on the spot
- using school servers
- using your home server
- Advance work/patch management – Mercurial queues
This last section will be an external contributed section