32

プロジェクトに関係なく、単一のユーザー名ですべてのパブリック リポジトリへのすべてのコミットを取得する簡単な方法があるかどうかを知りたいです。

私は複数の組織に所属しているので、私が貢献しているプロジェクトと、プル リクエストを受け入れたプロジェクトのリストを作成しようとしています。

これまでのところ、私の google-fu と github api docs を調べただけでは不十分であることがわかりました。

4

6 に答える 6

20

http://zmoazeni.github.com/gitspective/はあなたの友達です。:-) 「プッシュ」以外のすべてを除外すると、最初に自分で実装するためのコーディング作業がなくても、ビューが得られます。

自分で作業をやり直したい場合は、Chrome Devtools の [ネットワーク] タブで何が起こっているかを調べると、API クエリを模倣するのに役立つ場合があります。

于 2012-05-20T00:53:10.933 に答える
11

これを行う正しい方法は、Events APIを使用することです。

まず、ユーザーのイベントを取得する必要があります:

GET /users/:username/events

次に、typeが に設定されてPushEventいるアイテムの応答配列をフィルタリングします。これらの各項目はgit push、ユーザーごとに対応しています。payload.commitsそのプッシュからのコミットは、配列内で時系列の逆順で利用できます。

author.email次のステップは、各コミット オブジェクトのプロパティをチェックして、他のユーザーが行ったコミットを除外することです。また、同じオブジェクトのや などshaのプロパティにもアクセスでき、プロパティを使用して複数のプッシュで重複するコミットを排除できます。messageurldistinct

編集:コメントでAdam Taylorが指摘したように、このアプローチは間違っています。RTFMに失敗しました、ごめんなさい。API を使用すると、最大 300 件のイベントを取得できます。また、イベントは過去 90 日間に制限されています。完全を期すためにここに答えを残しますが、すべてのコミットを取得するという前述の質問については、うまくいきません。

于 2016-07-08T19:56:39.690 に答える
1

この質問はかなり古いことは知っていますが、これに対する独自のソリューションをコーディングすることになりました。

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.
于 2015-01-07T10:51:46.160 に答える