1 Creating a new workshop
2 =======================
4 There is a central repository for all boot camp material [1].
6 https://github.com/swcarpentry/workshop
8 The “master” branch has the current state-of-the-art source for the
9 instructors' projected content, handouts, workshop homepage, …. If we
10 can't agree on a canonical representation, there may be a handful of
11 feature branches with alternative content.
13 Topics will live in per-subject subdirectories, ideally organized in
14 half-day-sized chunks.
38 Figure 1: Example directory tree for the current 2012-12-my-workshop
39 tip. Sections should be in half-day-ish chunks. Complicated topics
40 that need more detailed coverage (e.g. version control) can have
43 An instructor preparing for a new workshop should create a
44 per-workshop branch from the master:
46 $ git checkout -b 2012-12-my-workshop master
48 and optionally merge feature branches they like:
52 This gives a starting point for developing your workshop.
54 -o--o--o--o--o origin/master (same as local master)
55 \-o--o \ origin/git-wtk
56 \------o 2012-12-my-workshop
58 Figure 2: Graph of commits for the beginning of the
59 2012-12-my-workshop branch. Time increases to the right. Commits
60 are marked with “o”. ASCII art connects child commits with their
61 parents. The merge of a well-maintained feature branch should be
64 If you don't like remote branches cluttering your local repo, you can
65 clone a single branch of the master repository using
67 $ git clone --single-branch …
69 Developing workshop content
70 ===========================
72 If you don't have strong ideas about the content, there's probably not
73 much to do here besides tweaking a few workshop-specific bits
74 (location, dates, master-index, …). These changes should go into the
77 -o--o--o--o--o origin/master
78 \-o--o \ origin/git-wtk
79 \------o--a--b 2012-12-my-workshop
81 Figure 2: Workshop-specific changes go into the workshop-specific
85 ------ -----------------------------------------------------
86 a README.md: link to shell, git/basic, and git/advanced
87 b README.md: localize for 2012-12 workshop at my house
89 If you want to change some of the general content, you should make
90 your change on the master branch (or the feature branch like
91 “git-wtk”). Then pull your changes into your workshop branch and make
92 a pull request for inclusion in the master repository.
95 -o--o--o--o--o--------\---c origin/master
96 \-o--o \ \ origin/git-wtk
97 \------o--o--o--b 2012-12-my-workshop
99 Figure 3: You can't push to master, so you made a new “typo-fix”
100 branch. Later on, a SWC dev will merge it into master. Example
104 ------ --------------------------------------------------
105 a git/basic: fix origin\master -> origin/master typo
106 b merge recent master branch updates
107 c git/basic: merge origin\master typo fix
109 If you really want to roll your own content, feel free to skip the
110 master branch entirely.
112 -o--o--o--o--o origin/master
113 \-o--o origin/git-wtk
114 I--o--o--a 2012-12-my-workshop
116 Figure 4: A disjoint branch (2012-12-my-workshop). The commit “I”
117 has no parents. Different branches stored in the same repository
118 don't need to share any common commits. They're still addressing
119 the same goal, and having them in the same repo means its easier to
122 Publishing workshop websites
123 ============================
125 This is not really part of the workshop-branch vs. workshop-repo
126 discussion, but one benefit to the workshop-repo approach is that each
127 workshop may have a gh-pages website at
129 http://<user>.github.com/<repo>
130 http://swcarpentry.github.com/2012-12-my-workshop
132 In the workshop-branch approach, that website should probably live at
134 http://swcarpentry.github.com/workshop/2012-12-my-workshop
136 Keeping the master gh-pages branch up-to-date amongst several
137 simultaneous workshops may involve some submodule shenanigans [1].
138 However many instructors will not be SWC devs, so they'll just be
139 building their own workshop site from their workshop branch and
140 publishing it wherever they like (e.g. their department server,
141 personal GitHub account, …).
143 Post-workshop archival
144 ======================
146 The per-workshop branch is a clean record of how your source
147 developed. A SWC dev that has been working on the master repository
148 directly should just tag your tip and delete the branch. Git branches
149 are basically tags that move. Once the workshop is done, there's no
150 need for its tip commit to change, so you might as well mark it with a
153 If your workshop branch has been living in your own personal
154 repository. Submit a pull request to the master repo, and a SWC dev
155 will import your branch, tag the tip, and delete the branch for you.
158 [1]: There's a mock-up at https://github.com/wking/swc-workshop
159 [2]: https://github.com/wking/swc-workshop/blob/gh-pages/README