This repository contains the bash and Perl scripts for managing an organization and repositories on GitHub used for CS160 Spring 2016, UC Berkeley.
- Visit GitHub Education to request an
advanced organization plan.
- For the Spring 2016 class, we received a diamond plan that allows up to 300 private repos.
- Given a class of 200+ students, our strategy was to release assignments one by one (i.e., once done grading, we make all graded private repos public. We then release the next assignment with private repos.)
- Add GSIs as owners.
- Follow GitHub Help for Creating an access token for command-line use
- Set up your bash or Perl environment. Perlbrew is a handy perl installation management tool on Mac.
- For each assignment, consider using [GitHub Classroom] (https://classroom.github.com/) to set up a link that students can create individual repos based on an assigned template.
invite_user.sh
retrieves a list of GitHub usernames from a text
file and adds users to an organization. Added members will need to
accept the invitation via email notification sent by GitHub or visit the
organization page (e.g.,
https://github.com/cs160-sp16).
./invite_user.sh your_github_token your_org_id filename_of_student_list
Be sure to change the script access permission via chmod a+x
Note: This requires having a perl module that reads json content.
tag_repos.pl
tags target private repos to label the submitted version.set_public.pl
changes the visibility of target private repos to public.
./tag_repos.pl your_github_token your_org_id
Creating new teams, adding team members, and creating team repos: This requires csv files that include team info. See the file headers for more info.
create-team-and-add-members.pl
creates new teams and adds team members.create-repo-for-team.pl
creates a team repo for each team.
GitHub API GitHub Education GitHub Classroom
Peggy Chi (peggychi@cs.berkeley.edu)
Senpo Hu for helping build up the scripts