SC2012BootcampPlan » History » Version 18

Chris Cannam, 2012-04-24 03:30 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 15 Chris Cannam
h2. Contents
20 15 Chris Cannam
21 15 Chris Cannam
Detailed contents:
22 3 Chris Cannam
23 7 Chris Cannam
 * A presentation introduction to the concept of version control.
24 7 Chris Cannam
 ** What is it for and why is it useful?
25 7 Chris Cannam
 ** What can go wrong without it?
26 7 Chris Cannam
 ** How does a version control system work?
27 7 Chris Cannam
 ** *History* + *Collaboration*
28 3 Chris Cannam
 * Check that participants have EasyMercurial installed and working
29 8 Chris Cannam
 * *Worked example, part 1: Working by myself*
30 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
31 3 Chris Cannam
 ** We will be working on a recipe for fish stew for a future recipe book
32 3 Chris Cannam
 ** Make a new directory, create a text file @fishstew.txt@ in it, start adding an ingredients list, save
33 4 Chris Cannam
 ** Run up EasyMercurial, "Open" that directory, see @fishstew.txt@ in untracked file list, explain this
34 1 Chris Cannam
 ** Add file, commit, supply a message, note that we now have some history
35 17 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 in a moment_
36 13 Chris Cannam
 ** A changeset records the state of all files, not just one file: add another file, @omelette.txt@ and add that
37 8 Chris Cannam
 ** Commit change, review history, look at the diff
38 1 Chris Cannam
 ** _Digression: every action we're taking here corresponds to one command-line command: show hg log, hg diff etc_
39 10 Chris Cannam
 ** Go back to that backup file in My Work, add it to ignored list, commit
40 13 Chris Cannam
 ** The history is not just for information: we can go back to the previous version by updating to it...
41 12 Chris Cannam
 ** ... and then a normal update gets us back to the latest version again
42 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?_
43 12 Chris Cannam
 ** Make and commit another change, just to make the history more interesting
44 11 Chris Cannam
 ** What if we make a change and decide we don't want to commit it? Edit something, then hit Revert
45 16 Chris Cannam
 ** ... but we are still in big trouble if our computer fails. Thus:
46 16 Chris Cannam
 * *Worked example, part 2: Working by myself "with backups"*
47 16 Chris Cannam
 ** *Topics:* Clone, push and pull, using an online repo
48 18 Chris Cannam
 ** Register an account on Bitbucket and create a new private repository
49 18 Chris Cannam
 ** Look up its URL
50 18 Chris Cannam
 ** In EasyMercurial, hit the Push button, enter URL, push to remote repo, check that the history is present and correct on the site
51 18 Chris Cannam
 ** Exit EasyMercurial. Delete the local repository / working copy folder completely!
52 18 Chris Cannam
 **