GitRoom Manager uses a primary course repository (Main Repo) on your local machine as the basis for each student’s personal repository. When seeding/updating student repositories, you are actually
Students then have access to their personal repositories via GitHub. They can clone them to their personal machines and interact with the repo as they would any other repo.
The instructor has a new assignment or lesson ready in the main repo
to push to the student repositories. To perform a class update,
GitRoom Manager will first perform a
git pull from each student’s
remote to local repo. This prevents merging issues in the next step.
Next, each local student repo is synced with the main course repo
rsync shell command. The command only copies changed
files, but will overwrite files with the same name.
Students interact with their repositories as with any other repository. They can pull down instructor changes and push up their own (e.g., submit assignments).
As with the first step, the instructor updates the local student repos with their respective remotes. They now can inspect student work manually or use the grader function to make quick notes on text files.
Throughout these instructions, I refer to the main course files as the main course repo(sitory). GitRoom Manager neither requires that the main course directory/files be a git repository nor manages these files, only uses them to update the student repositories.
I assume, however, that most instructors will also want the main
course files to be a git repository. If that is the case, then the
user must maintain the main course repository outside of GitRoom
Manager as they would normally. GitRoom Manager has been built to
handle this situation and will ignore certain files/directories, such
as the main
.git directory, when copying from the main to student
Because the basic structure of the program, all student repositories must be hosted locally. This means that the main repository is copied on your local machine x times, where x is the number of students in the course. GitRoom Manager, therefore, may not be practical for courses with large numbers (> 30) students. Instructors should also consider hosting large binary files or data sets external to the course repository to limit size.
The default behavior of GitRoom Manager is to overwrite student files with main repo files of the same name. This behavior allows instructors to update lessons or assignments after students have initially received them. The consequence of this decision is that students cannot take notes on lesson files or complete homework using assignment files (fill in the blank).
An easy solution is to have students create new files for notes or
homework, or rename the original files. The instructor can also
include a blank student use directory (e.g.,
working) in the main
course repo that they promises not to use but instead is for the use
of the students.