在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:danwallach/github-classroom-utils开源软件地址:https://github.com/danwallach/github-classroom-utils开源编程语言:Python 100.0%开源软件介绍:GitHub Classroom UtilsThis repository contains a number of utilities that I've written (and rewritten) over the years to help with GitHub Classroom. Most recently (Oct 2019), I revamped the code to launch multiple, concurrent requests to the GitHub servers whenever possible. These tools now run significantly faster. SetupI typically have an administrative repository, private to just the instructors, where I keep grades, slides, and other materials related to running my classroom. I'll copy these utilities to that directory and configure them to operate on the student repositories for just that class. Installation & Configuration
ToolsAll of these tools use a common library to interact with GitHub that tries to avoid rescanning student repositories unless something has changed. These scans can take a while to run and also burn through your available GitHub API request limit, so it's important to cache the results. (You'll see a multi-megabyte JSON file written out as a dot-file in the current directory.) The cache uses the
ETag headers
generated by GitHub to try to avoid repeated downloads of identical lists
of all the student repositories.
GitHub's implementation of ETag
seems to be unreliable, so you'll be wanting to manually delete the cache
if you know that your students have created new repositories. You
do this by removing the cache file, which has a name like
Tool usage. Each tool below let's you run it with a github_clone_allYou often want to get a local copy of every repo beginning with a common prefix,
e.g., An optional flag, github_rate_limitIf you keep running these tools, you'll eventually hit the wall with GitHub's rate limits. This tool tells you how many requests you have left and when the timer will reset. github_private_allIf you checked the wrong box when setting up GitHub Classroom, and all your students' repositories are public, when you meant them to be private, you can go back into GitHub Classroom's settings and make sure that future cloned repositories will be private, but what about the existing ones? This tool will tell GitHub to make private all the matching repositories. (I've needed this twice in so many years, so I figure others might need this as well.) github_no_partnersYou tell the students that they're required to have a partner, or to have a minimum group size. How do you detect the missing students? This script does all that. It scans all the projects, extracts the teams, and lets you know about any project with fewer than the minimum number of members. Likewise, if there are students in your database who aren't attached to any GitHub projects, you get their information as well. github_gradersIf you're using GitHub Classroom, one of the things you may need to do is assign student submissions to graders. This project does this as a random mapping, printing a document that you might share with your graders on Piazza or whatever forum, with grader names and student project hyperlinks. First, create a list of GitHub IDs that correspond to your graders and
place that in the Our graders need to know how to go from GitHub identifiers to our
internal NetIDs, emails, and so forth. The tool will read in a CSV
file with all this specified (by default, Typical usage: A new feature, Another new feature, The output of this tool is in Markdown format, which Piazza has recently added. Select the Markdown button before cutting-and-pasting. We post this on Piazza, visible only to the graders, and we ask the graders to edit the post to mark the students as "done" when they're done with their grading session. (This helps us see what graders haven't finished their work and, if necessary, assign other graders to pick up the slack.) github_event_timesThis program uses the GitHub "Events" API to print all of the push times
for each commit. This might be
useful if you have a student who you suspect of falsifying commit times
around a deadline and you need to document what happened. By default,
you get a LaTeX "table" with a "tabular" inside. If the table is
too large, you've got two useful flags, Lets say you want to get the commit times for a series of repos
with
names like Note that GitHub only retains the underlying event data for a small amount of time, maybe three months. If you see something unusual, capture this output while it's still available. github_completion_timesThis reads all the available CI data for every commit in every repo and produces a plot over time of how many students have passed all the tests and gotten a green checkmark. Here's an example from my own students, showing work in progress toward a deadline on 2019-09-01; you can see roughly 100 of 170 students have completed the work on the evening of 2019-08-30. The timezone used to render the chart is set from the
github_invite_to_orgThis will read a specified JSON file ( The JSON file should define a dictionary (mapping) of The role to which each username is being invited will be printed as well as the response from GitHub showing the status of that request. The resultant printout is in the format of a series of JSON dictionaries. github_org_teamsThis will print out information about the teams in a GitHub organization (either the default in Note: The team name "slug" is included in the printout. The resultant printout is in a JSON dictionary format. github_team_membersThis will print out the members of a specified team ( Note: The team name must be the team name The resultant printout is in a JSON dictionary format. github_invite_to_teamThis will read a specified JSON file ( Note: The team name must be the team name The JSON file should define a dictionary (mapping) of The team to which each username is being invited will be printed as well as the response from GitHub showing the status of that request. The resultant printout is in the format of a series of JSON dictionaries. See also
Recent Updates
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论