SC2012BootcampPlan » History » Version 14

Chris Cannam, 2012-04-24 03:04 PM

1 1 Chris Cannam
h1. Plan for Software Carpentry 2012 Boot Camp on Version Control
2 1 Chris Cannam
3 2 Chris Cannam
h3. Purpose
4 1 Chris Cannam
5 2 Chris Cannam
To explain version control to researchers who have never used it before, or who want to understand it better.
6 2 Chris Cannam
7 2 Chris Cannam
h3. Context
8 2 Chris Cannam
9 2 Chris Cannam
Two hour interactive live workshop, using EasyMercurial and the Mercurial command-line tool.
10 2 Chris Cannam
11 2 Chris Cannam
h2. Outline
12 3 Chris Cannam
13 3 Chris Cannam
The basic plan is:
14 6 Chris Cannam
15 3 Chris Cannam
 # presentation introduction to version control in general (using either whiteboard drawings or a PowerPoint presentation)
16 3 Chris Cannam
 # long worked example in which basic topics of version control are worked through using EasyMercurial and then some more advanced topics are returned to using the command-line tool
17 3 Chris Cannam
 # closing remarks talking about other tools, other topics of interest etc
18 3 Chris Cannam
19 3 Chris Cannam
Detailed outline:
20 3 Chris Cannam
21 7 Chris Cannam
 * A presentation introduction to the concept of version control.
22 7 Chris Cannam
 ** What is it for and why is it useful?
23 7 Chris Cannam
 ** What can go wrong without it?
24 7 Chris Cannam
 ** How does a version control system work?
25 7 Chris Cannam
 ** *History* + *Collaboration*
26 3 Chris Cannam
 * Check that participants have EasyMercurial installed and working
27 8 Chris Cannam
 * *Worked example, part 1: Working by myself*
28 5 Chris Cannam
 ** *Topics:* Initialising a repository, committing files, reading history, looking at diffs, reverting unwanted changes, going back in time to look at old versions
29 3 Chris Cannam
 ** We will be working on a recipe for fish stew for a future recipe book
30 3 Chris Cannam
 ** Make a new directory, create a text file @fishstew.txt@ in it, start adding an ingredients list, save
31 4 Chris Cannam
 ** Run up EasyMercurial, "Open" that directory, see @fishstew.txt@ in untracked file list, explain this
32 1 Chris Cannam
 ** Add file, commit, supply a message, note that we now have some history
33 9 Chris Cannam
 ** Make a change, note that files are marked as modified, note possible presence of backup file (ending ~ or .bak) from editor -- _we'll come back to that_
34 13 Chris Cannam
 ** A changeset records the state of all files, not just one file: add another file, @omelette.txt@ and add that
35 8 Chris Cannam
 ** Commit change, review history, look at the diff
36 1 Chris Cannam
 ** _Digression: every action we're taking here corresponds to one command-line command: show hg log, hg diff etc_
37 10 Chris Cannam
 ** Go back to that backup file in My Work, add it to ignored list, commit
38 13 Chris Cannam
 ** The history is not just for information: we can go back to the previous version by updating to it...
39 12 Chris Cannam
 ** ... and then a normal update gets us back to the latest version again
40 11 Chris Cannam
 ** Now, let's say this is the version we send off to our agent to see whether (s)he can sell it to a publisher. (Or whatever we do these days.) Tag it as v0.1 -- _digression about sensible tag names on whiteboard?_
41 12 Chris Cannam
 ** Make and commit another change, just to make the history more interesting
42 11 Chris Cannam
 ** What if we make a change and decide we don't want to commit it? Edit something, then hit Revert
43 14 Chris Cannam
 * *Worked example, part 2: Working by myself with backups*