- Create a personal GitHub access token. Instructions can be found here: GitHub Docs - Creating a personal access token (classic)
- Save this access token in
config.py. It will be used to connect to the GitHub REST API. - In
script.py, define from which repository the event data will be extracted and how many issues (this includes pull requests) should be fetched. - In
script.py, define where the data should be stored. - Run
python3 ../github_logs/script.py.
Sidenote: If you get an list index out of range error, make sure you are using a repository with issues.
This part of the Stack't project is still in active development. A list of what kind of data is extracted is given below and will be kept up-to-date.
- object types:
issue(this includes both pull requests and issues)user(GitHub user accounts + persons who made commits)- Note that commits are often not linked to a GitHub user account. In that case, the name of the committer is used instead of the unique user id. It's therefore possbile that the same person has multiple user objects associated to it.
team(GitHub team)commit
- object attributes:
issue:number,title,timeline_urluser:id,login,type,url(= html url)- Note that "committers" don't have any attributes.
team:slug,name,privacy,url(= html url)commit:sha(= unique id),commit_message,url(= html url)
- event types:
- all GitHub timeline events, except
line-commented created(for new issues)
- all GitHub timeline events, except
- event attributes:
author_association(if available in API response)
- event-to-object relations:
created-to-issue:createdcreated-to-user:created bytimeline_event-to-user:actor(user that did the action) Note: not available yet for event typecommitted.review_requested/review_request_removed-to-user:requested_reviewerreview_requested/review_request_removed-to-team:requested_teamassigned/unassigned-to-user:assigneecomitted-to-commit:comitted
- object-to-object relations:
issue-to-user:created byissue-to-user:requested_reviewer(dynamic, set tonullwhenreview_request_removed)issue-to-team:requested_team(dynamic, set tonullwhenreview_request_removed)issue-to-user:assignee(dynamic, set tonullwhenunassigned)commit-to-user:committer