Github APIを使用するとできますが、リポジトリを複製するほうがはるかに高速で簡単です。
具体的には、get all referencesとブランチ用フィルタ(refs/heads/...
)です。その後、get the latest commit on each branchを呼び出し、親とその親の親をフェッチします。リポジトリのルートに達するまで続きます。
コミットは複数の親を持つことができるので、コミットを線形に格納するだけではなく、グラフを作成する必要があります。
各コミットをフェッチするのは別のWeb要求です。
あなたはrate limited to 5000 requests per hourです。
更新を取得するには、前に見たコミットに達するまでプロセスを繰り返します。これは、コミット情報をどこかに保存する必要があることを意味します。リベースがそれらを変更する可能性があるので、ブランチヘッドのIDだけを格納するだけでは不十分です。
それとも、(ネットワークではなく)ディスクスペースのかなりの部分が保存されますチェックアウト、なしでリポジトリを取得するには、裸のクローン、git clone --bare
を行うことができます。その後、通常のGitプロシージャを使用して履歴を調べます。
Gitリポジトリの形式は非常に効率的です。多くの場合、履歴は現在のチェックアウトサイズより大きくないことがよくあります。そのネットワークプロトコルも非常に効率的です。そしてそれはちょうどgit fetch origin
でそれ自身をアップデートする方法を知っています。
それとも、あなただけの目で簡単に見て欲しい場合は、プロジェクトのGithubのページにCommits
タブを使用します。 For example。
おそらくhttps://developer.github.com/v3/ – nullpointer
で何かを探してコミット履歴*はリポジトリです。'git log'の出力のようなコミットログメッセージ、日付、時刻だけを意味しますか?おそらく、リポジトリを複製する方が良いでしょう。ウェブAPI経由で取得しようとするよりも速く、更新を管理する必要はありません。 – Schwern
私はgit ls-remoteはあなたがクローンする必要がないいくつかのコマンドの1つだと思いますが、それはあなたにコミットをもたらすわけではありません – pedrorijo91