Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@tinoji

GitHubのOrganizationのコミットアクティビティを可視化する

More than 1 year has passed since last update.

これは何

あるGitHub Organizationの去年1年間のコミット数を、週単位で集計してグラフにする方法。
忙しかった時期とかが見えて面白いかもしれん。

リポジトリのアクティビティはInsightsから簡単に見れるが、Organization単位のInsightsはGitHub Enterprise Cloudでしか見れないらしいので、Pythonでサクッと書いてみた。

こんな感じのグラフが得られるぞい。x軸が週、y軸がコミット数。
activity.png

やり方

依存パッケージを入れて↓のコードを実行するだけ。ローカルで普通に実行してもよし、jupyter notebookでもよし、Colaboratoryでもよし。

GitHub APIの仕様的に初回の実行はかなり遅い。

import isoweek
import datetime
import matplotlib.pyplot as plt
from github import Github
from operator import add

# See: https://pygithub.readthedocs.io/en/latest/introduction.html
g = Github("{ユーザー名}", "{パスワード}")
# For GitHub Enterprise
# g = Github(base_url="https://{hostname}/api/v3", login_or_token="{access_token}")

weeks = isoweek.Week.last_week_of_year(datetime.datetime.now().year - 1).week
stat = [0] * weeks

for repo in g.get_organization("{organization名}").get_repos():        
    activity = repo.get_stats_commit_activity()
    if activity is not None:
        activity_per_week = [x.total for x in activity]
        stats = list(map(add, stat, activity_per_week))

x = list(range(weeks))
plt.bar(x, stats, width=1.0)
plt.show()

:point_right: Gist

補足

ちょっと修正すれば日単位にもできるゾ。totalを取っているところを変えればいいはず。
参考: GitHub Statistics API

コミット数じゃなくて、Code frequency的な感じで差分のLOCまで分かると面白そうなので、誰かやってほしい。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tinoji
dmmcom
総合エンタテイメントサイト「DMM.com」を運営。会員数は2,900万人を突破。動画配信、FX、英会話、ゲーム、太陽光発電、3Dプリンタなど40以上のサービスを展開。沖縄での水族館事業参入、ベルギーでのサッカークラブ経営など、様々な事業を手掛ける。また2018年より若手起業家の支援を強化、「DMM VENTURES」による出資や、M&Aなどを積極的に展開している。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?