2016-03-28 7 views
2

Gerrit APIの公式docによれば、特定のコミットIDを持っている場合は、プロジェクトごとにコミットにアクセスすることになっています。Gerrit REST APIからすべてのコミットを取り出す方法はありますか?

pygerritを使用して

例:

rest.get(r'/projects/psydev-lis/commits/dab837369ab0623f5869f500c199a23fd3249b82') 

問題は、私が今まで行ったすべてのコミットを引っ張って、彼らが追跡できるようにデータベースにアップロードする使命を帯びてきたということです。クエリと反復処理を行うためのすべてのコミットIDを含むデータベースはどこにもありません。誰も私がすべてのコミットデータの一括読み込みを実行する最善の方法を見つけ出すのに役立つGerritの経験がありますか?

もう1つの問題は、APIの制限のために一度に500回の変更しか行うことができず、すべてを見たときに追跡する方法がないことです。

答えて

0

gerritについてよく分かりませんが、通常のgitクローンを実行してそこからコミット情報を得ることはできません(git log)?

私は自分自身をpygerritが、私はあなたがこの方法でヘリット・プロジェクトの500点の変更(コミット)照会することができます Java equivalent version使用している使用していない
0

:=あなたがタグに& Sを追加する場合

GerritRestApi.changes().query(serverURL + "project:projectName+branch:master+status:merged").get(); 

をxここで、xは見たいコミットの数のオフセットです。プロジェクトのコミットの総数を知っているならば、コミットのリスト全体を繰り返し処理することができます。あなたのヘリットプロジェクトで合計5000コミットしている場合
例:

int offset = 4500; 
List<ChangeInfo> list = new ArrayList<>(); 
while(offset >= 0){ 
    //Gets 500 commits from the offset and adds it to a list 
    list.addAll(GerritRestApi.changes().query(serverURL + "project:projectName&S=" + offset).get()); 
    offset -= 500; 
} 

を、これは上記のリンクからJavaクライアントの実装であり、それは正確に構文正しくないということを忘れません。しかし、これは、コミットを反復する方法の一般的な考え方を得るのに役立ちます。