git/cheat-sheet.md: Add explicit push branch and document branch base
[swc-version-control.git] / instructor.md
1 Version control is the most important practical skill we introduce.
2 By the end of 90 minutes, the instructor should be able to get
3 learners to fetch upstream updates, make local edits, and submit their
4 changes upstream and why that's a good way to structure development.
5
6 Provided there aren't network problems, this entire lesson can be
7 covered in 90 minutes.
8
9 Tool choices
10 ============
11
12 There are many version control tools available, and we have Software
13 Carpentry branches for some of them.  Possible choices:
14
15 Git
16 ---
17
18 * `git://github.com/wking/swc-boot-camps.git version-control-git`
19
20 Subversion
21 ----------
22
23 * `git://github.com/wking/swc-boot-camps.git version-control-svn`
24
25 Teaching notes
26 ==============
27
28 * Make sure the network is working *before* starting this lesson.
29
30 * Give learners a ten-minute overview of what version control does for
31   them before diving into the watch-and-do practicals.  Most of them
32   will have tried to co-author papers by emailing files back and
33   forth, or will have biked into the office only to realize that the
34   USB key with last night's work is still on the kitchen table.
35   Instructors can also make jokes about directories with names like
36   "final version", "final version revised", "final version with
37   reviewer three's corrections", "really final version", and, "come on
38   this really has to be the last version" to motivate version control
39   as a better way to collaborate and as a better way to back work up.
40
41 * Learners could do most exercises with repositories on their own
42   machines, but it's hard for them to see how version control helps
43   collaboration unless they're sharing a repository with other
44   learners.  In particular, showing learners who changed what using
45   `blame` is only compelling if a file has been edited by at least two
46   people.