Repositories
How repositories store student work and how to publish and sync them
What is a repository?
Section titled âWhat is a repository?âA repository is storage. It points at a Github template repo, and when you publish it Classmoji copies that template into one Github repo per student (or per team). Thatâs all it does: it has no weight, no deadline, and holds no grades.
The graded work is an assignment. An assignment submits through a repository, and several assignments can share the same one, a semester-long project repo with a milestone assignment each week, for example.
Creating a repository
Section titled âCreating a repositoryâGo to Repositories and click New repository.
- Title: becomes the repo name slug (e.g. âData Structuresâ â
data-structures-username) - Description: shown to students
- Type: Individual (one repo per student) or Group (one repo per team)
- Template repo: a Github repo path (e.g.
myorg/data-structures-template) that becomes the starting point for every studentâs repo. Starter code is copied from it. - Autograding tests: optional tests that run on every push. See Autograding.
For a Group repository you also set:
- Team formation: Instructor Assigned (you build the teams) or Student Self-Formed (students organize themselves before a deadline)
- Max team size
- Formation deadline: for self-formed teams, when they need to be final
You can also get here from a module card: Add item â Assignment â Repository opens the assignment form, where the target picker has a New repository link to this form.
The Repositories page
Section titled âThe Repositories pageâThe list shows each repository with its Type and Status (Draft or Published). Each row starts expanded, listing its issue-mode assignments underneath (title, an issue tag, status, View, Edit). Push-mode assignments arenât listed as rows; open them from their module or with View on the repository row.
Row actions:
- View: opens the assignment page. When several push-mode assignments share the repo, itâs a menu.
- Edit: the repository form
- Publish (draft) or Sync (published)
- âŽ: Autograde, Update student repositories, Calculate contributions (group repos), Unpublish, Delete
There is no separate repository detail page. Everything about a studentâs work is on the assignment page.
Publishing a repository
Section titled âPublishing a repositoryâRepositories start as drafts. Nothing exists on Github until you publish.
When you publish, Classmoji creates a copy of the template repo for every student (or team) in your roster and pushes the autograding workflow if the repository has tests. Assignments that submit through the repository become visible on their release date; in issue mode, thatâs also when their Github issue is opened.
Syncing a repository
Section titled âSyncing a repositoryâAfter publishing, hit Sync if something is missing. A student joined late and doesnât have a repo, or a release date passed and an issue didnât show up. Sync checks for gaps and fills them in. Thatâs all it does.
Update student repositories (in the ⎠menu) is different: it opens a pull request in each student repo carrying the changes you made to the template since it was copied.
Individual vs group
Section titled âIndividual vs groupâAn Individual repository gives every student their own repo. A Group repository gives each team one shared repo; any member can push, and in issue mode any member can close the issue for the team. Teams are managed on the Teams page, and Calculate contributions on a group repo breaks down who committed what.