branch: fix non-sentence in pull-request archival
[workshop-organization.git] / branch
1 Creating a new workshop
2 =======================
3
4 There is a central repository for all boot camp material [1].
5
6   https://github.com/swcarpentry/workshop
7
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.
12
13 Topics will live in per-subject subdirectories, ideally organized in
14 half-day-sized chunks.
15
16   .
17   ├── README.md
18   ├── debugging
19   │   ├── README.md
20   │   …
21   ├── make
22   │   ├── README.md
23   │   ├── example-project
24   │   …
25   ├── python
26   │   ├── README.md
27   │   ├── animals.txt
28   │   …
29   ├── shell
30   │   …
31   ├── version-control
32   │   ├── git
33   │   │   ├── basic
34   │   │   │   …
35   │   │   └── advanced
36   …   …       …
37
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
41   nested sub-sections.
42
43 An instructor preparing for a new workshop should create a
44 per-workshop branch from the master:
45
46   $ git checkout -b 2012-12-my-workshop master
47
48 and optionally merge feature branches they like:
49
50   $ git merge git-wtk
51
52 This gives a starting point for developing your workshop.
53
54   -o--o--o--o--o    origin/master    (same as local master)
55     \-o--o      \   origin/git-wtk
56           \------o  2012-12-my-workshop
57
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
62   painless.
63
64 If you don't like remote branches cluttering your local repo, you can
65 clone a single branch of the master repository using
66
67   $ git clone --single-branch …
68
69 Developing workshop content
70 ===========================
71
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
75 workshop branch:
76
77   -o--o--o--o--o          origin/master
78     \-o--o      \         origin/git-wtk
79           \------o--a--b  2012-12-my-workshop
80
81   Figure 2: Workshop-specific changes go into the workshop-specific
82   branch.  Example log:
83
84     commit  message
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
88
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.
93
94                 /-a----\---\   typo-fix
95   -o--o--o--o--o--------\---c  origin/master
96     \-o--o      \        \     origin/git-wtk
97           \------o--o--o--b    2012-12-my-workshop
98
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
101   log:
102
103   commit  message
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
108
109 If you really want to roll your own content, feel free to skip the
110 master branch entirely.
111
112   -o--o--o--o--o        origin/master
113     \-o--o              origin/git-wtk
114             I--o--o--a  2012-12-my-workshop
115
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
120   clone/fetch/diff/….
121
122 Publishing workshop websites
123 ============================
124
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
128
129   http://<user>.github.com/<repo>
130   http://swcarpentry.github.com/2012-12-my-workshop
131
132 In the workshop-branch approach, that website should probably live at
133
134   http://swcarpentry.github.com/workshop/2012-12-my-workshop
135
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, …).
142
143 Post-workshop archival
144 ======================
145
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
151 tag.
152
153 If your workshop branch has been living in your own personal
154 repositor, submit a pull request to the master repo.  A SWC dev will
155 import your branch, tag the tip, and delete the branch for you.
156
157
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