プロジェクトに関係なく、単一のユーザー名ですべてのパブリック リポジトリへのすべてのコミットを取得する簡単な方法があるかどうかを知りたいです。
私は複数の組織に所属しているので、私が貢献しているプロジェクトと、プル リクエストを受け入れたプロジェクトのリストを作成しようとしています。
これまでのところ、私の google-fu と github api docs を調べただけでは不十分であることがわかりました。
プロジェクトに関係なく、単一のユーザー名ですべてのパブリック リポジトリへのすべてのコミットを取得する簡単な方法があるかどうかを知りたいです。
私は複数の組織に所属しているので、私が貢献しているプロジェクトと、プル リクエストを受け入れたプロジェクトのリストを作成しようとしています。
これまでのところ、私の google-fu と github api docs を調べただけでは不十分であることがわかりました。
http://zmoazeni.github.com/gitspective/はあなたの友達です。:-) 「プッシュ」以外のすべてを除外すると、最初に自分で実装するためのコーディング作業がなくても、ビューが得られます。
自分で作業をやり直したい場合は、Chrome Devtools の [ネットワーク] タブで何が起こっているかを調べると、API クエリを模倣するのに役立つ場合があります。
これを行う正しい方法は、Events APIを使用することです。
まず、ユーザーのイベントを取得する必要があります:
GET /users/:username/events
次に、type
が に設定されてPushEvent
いるアイテムの応答配列をフィルタリングします。これらの各項目はgit push
、ユーザーごとに対応しています。payload.commits
そのプッシュからのコミットは、配列内で時系列の逆順で利用できます。
author.email
次のステップは、各コミット オブジェクトのプロパティをチェックして、他のユーザーが行ったコミットを除外することです。また、同じオブジェクトのや などsha
のプロパティにもアクセスでき、プロパティを使用して複数のプッシュで重複するコミットを排除できます。message
url
distinct
編集:コメントでAdam Taylorが指摘したように、このアプローチは間違っています。RTFMに失敗しました、ごめんなさい。API を使用すると、最大 300 件のイベントを取得できます。また、イベントは過去 90 日間に制限されています。完全を期すためにここに答えを残しますが、すべてのコミットを取得するという前述の質問については、うまくいきません。
この質問はかなり古いことは知っていますが、これに対する独自のソリューションをコーディングすることになりました。
organization_repositories
最終的に解決策は、ユーザーがandサービスを使用して貢献したすべての潜在的なリポジトリを見つけるlist_repositories
ことです (私は octokit を使用しています)。
branches
次に、これらのリポジトリですべてのアクティブなブランチ (service ) を見つけ、それらのそれぞれについて、ユーザーからのコミットのみを見つけます (service commits
)。
サンプルコードは少し広範ですが、ここで見つけることができます
OBS: As pointed out, this solution does not consider organizations and repositories where you contributed but are not part of.