Use roster IDs for repository postfix instead of student GH username

Hi all,

When students take up an assignment, the repository gets created with their username in the repo name. Is there any option to use the roster ID instead? It would be very helpful for larger classes where we use section-letter+number as a classroom ID of sorts.


1 Like

Alternatively (and this is mostly a question to any team member that may see this), if I take some time to write the feature in and submit a PR, is it likely to get accepted?

If it is I’ll gladly do it, but if it’s not I’d rather spend the time updating our systems to work with different IDs.

@ReshefElisha the Classroom team is happy to review any pull request you’d like to submit, it appears that something like what you’re requesting is an open issue on the Classroom project, consider commenting there to see if the team is working on this or would like your help.

As a workaround, I require that students edit a to include their campus-issued email address, and deduct points if they don’t do that. Since all campus emails have the same format it’s easy to harvest them with a script. And identifying yourself in source code is a standard industry practice so I don’t feel it is an unfair burden on the students.


Thanks for the suggestions. I’ve created PR #1722 to address this.

@kevinwortman that’s a good idea, if the PR does not go through I may default to that instead. Do you worry about misrepresentation? (students submitting others’ identity) The class is over 180 students and most of the grading is automated. (I can also implement checks for gh-uname->uni-id, but I’m curious what your experience is like)

You’re right that students could misrepresent themselves, but this hasn’t been a problem for us. Students’ grades are on the line, and if they were caught they would be subject to the same academic honesty policy that applies to plagiarism, and this seems to be enough of a deterrent.

I have a Google Form that I ask all students to fill out. That’s a chance for me to survey them on a variety of basic questions, and also to just say “tell me your campus NetID and your GitHub ID”. Last semester, this mostly worked fine, except I had one student who changed their GitHub ID mid-semester, because whatever, so I had to tweak my scripts a bit.

As a matter of redundancy, I also require them to place their name and campus NetID in the file. Most do it, a few forget. I suppose I could tweak the Travis CI system to fail the build if it sees the string in the file. That would work wonders.

Was there any progress on this?

I’ve been looking for the same thing. I only care about their roster names, that I have specified, that match our LMS, etc. I could care less about their GitHub account names, and cross-referencing that is annoying. I thought that was the point of the identifiers, to make it easier for us to identify them.

Is this something I can set with the Probot? I’ve never used it, so just curious.

I have a work around for this… instead of creating individual assignments, I create group assignments with a maximum of 1 person per team. My instructions for my students is that their team name must be their name. The group assignments create repos as prefix+teamname so for me that works relatively well. Only problem is when there is more than one assignment then the teamnames clash so I have them use their name-assignment#

Thank you very much, @catherine-leung . I will look at that as a work around.

For multiple assignments, I build that into the prefix, in case that helps you:
where xxxxxx is their “name”. Ideally it would be their roster identification name, but GitHub makes it their GitHub username for individual assignments.

I’ll look at your method. I was also considering just a quick Python script that renamed the repos locally for me. I’m not doing the traditional pull-request or using full functionality of the repos when grading, so I could just run a quick script to rename them. But ya, gotta write the script and gotta put that mapping in a csv one time. Not hard work, but annoying…

its not the assignment prefix that is the issue… because you are doing group assignment, github classroom will create a “team” in your organization. So say on assignment one, a student uses their name as their team name. For assignment 2, if they use same name, then the team already exists and classroom won’t let them do it.

So usually I have them do put in for their team name a1-xxxxxxx

But yeah, I really would prefer having a way to easily say who is who by looking at repo name.

I see… it’s the added team separate from the repo that has to be unique per team/student per assignment, and the repo suffix just uses it. Ya, I see what you mean. Yea… that could be messy.

I think I’ll just write the script lol It’ll take a .csv mapping, and just rename them locally for me. If I want to do it better or support Git usage then I could do it with commands that change the repo name formally on the server too. If it works well for me I’ll post on my personal GitHub repo for random scripts just like this and you’re welcome to it :slight_smile:

I’ll have to (probably manually) setup the .csv mapping once a semester per class :confused: but that’s not too bad. I could also scrape the website or maybe they even have a GitHub Classroom specific API, but probably not. I personally do not want to rely on students providing any information, not only because this should be automated, but also they make so many mistakes I don’t want to have to fix them, and select very few, I can’t trust.

Thanks for your help!

Actually, setting up the mapping is already done! You can just download a .csv after the students have linked their GitHub accounts to their roster identifier. It has 4 columns: roster identifier, github account, id, full name (if filled out). I guess I missed that at first…

Still need the script though to rename the repos…

oh this must be going through the app… I usually don’t use that… just look at everything on github so repo name was more important for me.

Yes, repo name is important for me too.

But with code repositories in computer science courses, of course we have to download all the repos, compile, and run them. I can’t just look on the web page to know how well their code will function. And once I’ve downloaded 80 source code repos, while I go through them, it’s nice to have their roster identifier name right in the repo/folder name as opposed to the GitHub account name, so I don’t have to keep going back and forth.

But yes, as you said, you can accomplish that with group project naming.
I may do that. Or I may write a renaming script using that mapping that I can download.

Last semester I had a course where I had to download the files (3DS Max). When I went through the app, I did notice I was getting student names (not sure how that happened exactly… but it happened). But, draw back though was that about 50% of the files could not be opened by max. I don’t know if this is a bug involving git-lfs though… When I use my cloning script though, it got everything without a hitch.

Anyhow, if you are interested, I actually created a bunch of bash scripts before that would allow you to create repos and assign teams based on a csv file (got info by giving students a form to fill out). Its horrific…I’m probably not doing it quite right… but it does work (unless my students fill in their info with bad characters like brackets). It was just a bit manual for my tastes so using classroom now…but it might help you with how you want to set it up.

Feel free to use and alter (there may be bugs, no guarantees… I haven’t updated for years). Hope it will help though.

Oh nice! I wonder how you got that to happen automatically. I’m going to contact their support and see what the deal is. It seems like such a simple thing to support server side, to configure the repo names with identifier names instead of GitHub account names… I mean, I thought that was the whole purpose of the roster… And the feature request mentioned by the OP was years ago. Why isn’t this a simple checkbox at this point (with all that Microsoft money lol)

I actually just wrote a Python one yesterday because it was time for me to grade and I didn’t want to do the looking back and forth… It uses the roster file you can download per assignment. It doesn’t do any Git repo transformations, just physically renames the folders locally. I wasn’t sure how complicated it would be for my students if I actually committed and pushed repo name changes, so I didn’t modify that for now. But if I verify it’s not too big a problem for them, then I could add that functionality. This is a CS1 class, so for some of them it took a bit to learn Git scm and GitHub, and if I switched the repo names (and perhaps links) on them, it could be problematic.