GitRoom Manager uses a primary course repository (Master 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 master 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 master course repo using the
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. S/he 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 master course files as the master course repo(sitory). GitRoom Manager neither requires that the master 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 master course files
to be a git repository. If that is the case, then the user must maintain the master course repository outside of GitRoom Manager as s/he would normally. GitRoom Manager has been built to handle this situation and will ignore certain files/directories, such as the master
.git directory, when copying from the master to student repos.
Because the basic structure of the program, all student repositories must be hosted locally. This means that the master 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 master 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 master course repo that s/he promises not to use but instead is for the use of the students.