Как ежедневно получать выбранные идентификаторы коммитов с сервера Gerrit - PullRequest
1 голос
/ 22 апреля 2019

У меня есть репозиторий AOSP, в котором есть много git-проектов, и разработчики продолжают проверять свой код после его проверки на сервере gerrit. Таким образом, идентификатор фиксации будет упоминаться как выбранный вишней идентификатор фиксации в геррите.

Я хочу получить список всех идентификаторов коммитов разработчиков, которые ежедневно выбираются (проверяются и отправляются на сервер).

Как я могу получить этот список вместо того, чтобы попасть на сервер Gerrit вручную.

Есть ли возможность сделать это с помощью задания Дженкинса?

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Я нашел способ.

Я попробовал "git pull" во всех проектах git утром в репо, используя сценарий оболочки, и сохраню последний идентификатор фиксации в массиве, чтобы онполучит все последние коммиты каждого проекта.

Тогда я смогу получить последние коммиты в каждом из проектов git.

Но я принимаю, что здесь нет работы Дженкинса и Геррита.

В любом случае, спасибо за ваш ответ ElpieKay.

0 голосов
/ 22 апреля 2019

Геррит предоставляет команду 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 и Изменение запроса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...