Геррит предоставляет команду SSH gerrit query
для запроса базы данных ревизий.
ssh -p 29418 ${gerrit_username}@${gerrit_host} gerrit query comment:"Cherry Picked from branch" OR message:"cherry picked from commit" --current-patch-set --format json -S 0
Команда возвращает не более 501 записи. Последняя запись имеет ключ moreChanges
. Если его значение равно true
, существуют дополнительные записи. Установите -S 0
на -S 500
, чтобы пропустить первые 500 и снова запустить команду. Если moreChanges
равно true
, добавьте еще 500, чтобы пропустить. -S 1000
, -S 1500
, пока moreChanges
не станет false
.
Каждая запись является строкой в формате JSON. Разберите его, и вы сможете получить необходимые значения. Чтобы ограничить вывод, вам нужно добавить больше условий, таких как before:xxx
, after:xxx
, project:xxx
, branch:xxx
. См. Операторы запросов .
Кроме того, Геррит предоставляет эквивалентный REST API.
GET /changes/?q=<querystring>&o=<options>
Например, с curl
,
curl --digest -s --user ${gerrit_username}:${http_password} "http://${gerrit_host}/gerrit/a/changes/?q=comment:%22Cherry Picked from branch%22+OR+message:%22cherry picked from commit%22&S=500&o=CURRENT_REVISION"
Вы можете найти ${http_password}
в настройках Gerrit. Если ничего не существует, нажмите Generate Password
на странице настроек. %22
- это "
в URL. S=500
эквивалентно -S 500
. o=CURRENT_REVISION
эквивалентно --current-patch-set
.
Если вы собираетесь использовать python
, golang
или другие языки для вызова API, не забудьте использовать digest access authentication
,
Подробнее см. Gerrit Query , REST API Notes и Изменение запроса .