Best practices: incremental delivery of content


(Matthew Cole) #1

Right now, we open a new repository for each student when they receive a new assignment. This is suboptimal because our class has 70+ students, each doing 13 labs, 13 assignments and 4 projects, for a total of 2100 repositories to browse.

Ideally, we’d have one repository for each student’s assignments, one for each student’s labs, and one for each group for each project. However this requires being able to incrementally deliver each new assignment as the semester progresses.

My first thought was just open a pull request for each student, adding the new subdirectory of content but I can’t imagine a way to do that efficiently, and 70 pull requests that the students must properly accept sounds like trouble if not overwork.

What best practices do you recommend for doing such a thing? Anyone else having scaling problems with their classes?


(Joel Ross) #2

We solved this problem by making the “starter code” repositories public or at least accessible to students by having them join the organization, teaching them about remotes, and then having them run commands like git pull upstream to fetch the latest starter code. Effectively we keep telling students to run:

git remote add upstream https://github.com/org/starter-repo
git pull upstream master

Some instructors in my unit use this strategy; I personally go with the one-repo-per-assignment model; even if there are 1000 different repos, Github’s search feature and the standard naming produced by Github Classroom makes it easy to find what I’m looking for.