2016-03-28 4 views
2

Согласно официальному сообщению doc для Gerrit API, вы должны получить доступ к коммитам по проекту, если у вас есть определенный идентификатор фиксации.Есть ли способ получить все фиксации из API Gerrit REST?

Пример использования pygerrit:

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

Проблема заключается в том, что я была поставлена ​​задача вытягивать все коммиты, сделанные когда-либо, и загружать их в базу данных, так что они могут быть отслежены. У нас нет базы данных в любом месте, где содержатся все идентификаторы фиксации для запроса и повторения запроса. Есть ли у кого-нибудь опыт работы с Gerrit, который может помочь мне определить лучший способ сделать массовую загрузку всех данных фиксации?

Еще одна проблема, с которой я сталкиваюсь, заключается в том, что я могу только вытащить 500 изменений за счет ограничений API, и нет способа отслеживать, когда вы их видели.

ответ

0

Я не знаю много о gerrit, но разве вы не сможете сделать нормальный клон git и получить информацию о фиксации оттуда (git log)?

0

Я не использовал pygerrit себя, но я использовал Java equivalent version, который позволяет запросить 500 изменений (фиксаций) проекта Геррит таким образом:

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

Если добавить тег & S = 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 по ссылке выше и это не совсем правильно синтаксис. Но это может помочь вам получить общее представление о том, как итерации через коммиты.

Смежные вопросы