How to give students a template repo? 🤔

Hi there,

We are using GitHub for our class (not GitHub Classroom) and I want to give students some starter code for a group project. I set up an organization to host our repos, so my plan was to create the template repo and then have them fork that into their own repo inside the organization… but this does not work (forks into the same org are not allowed). Tried creating the template repo in my account (outside the org) but then only one fork is allowed.

I guess it would be possible for students to fork the template repo into their own accounts outside the org, but that’s not what I want as they would be all dispersed instead of having them “grouped” inside the organization.

I want them to have their copies somehow linked to the template repo so they can sync if I change it.

Did I get something wrong? Ideas on how I could achieve this?

Thanks in advance,


(Maybe I just need to use GitHub Classroom? :sweat_smile:)

1 Like

You’ve indeed described precisely the use case that GitHub Classroom is meant to solve.

The challenge is how to push changes to the students. You could use pull requests or you could write a giant script to check out, patch, and push each and every student, and then hope those students do a pull before getting into a merge conflict.

1 Like

OK, so if I understand it correctly, I could use an assignment in Classroom with starter code, and then when I have something in that starter code repository I want to push to students, I would create a pull request in their repositories for them to merge. Sounds good (it would actually be a group assignment and there are not that many groups, so it could work). Is that it? Thanks!

You’ve got two choices: pull requests and just pushing the changes yourself. If all that you’re doing is fixing a bug in your starter code, it’s probably easiest to just mechanically check out, edit, commit, and push each student repo. You then need to tell your students to pull your changes and deal with the inevitable merge conflicts.

Mmmh, so we are working now as suggested (Classroom assignment with starter code, created student group repos from there), and now that I have made some changes in the starter code/template repo, I wanted to create new pull requests in student group repos for them to merge those changes. However, the starter code/template repo is not set as “forked from” in student group repos, so I can’t really “compare” or create a pull request from there.

I want students to solve as much as possible by themselves, but I don’t want to confuse them by making them solve problems with specifics workarounds to make Classroom or my workflow work. So making them merge a pull request (or even create the pull request themselves) sounds fine, but having them manually add different remotes for example is too much I think. If something like that is going to be the solution then I would do it on their repositories myself and consider this “Classroom assignment with starter code” option as not a valid one for our needs…

Any clues on how I could proceed? Thanks!

Every week I start a XthAssignmentTopics project where I teach the topics of the next assignment. Then I create a private assignment with a starting code and Tests (the Solution branch is only available to them in certain cases) The starter code includes a TravisCI file to get a report from every push/pull request in terms of pass and fail tests…

1 Like