Фильтр gitlab фиксирует по ветке и сообщению - gitlab API - PullRequest
0 голосов
/ 24 февраля 2020

Я пишу приложение, которое использует gitlab api.

для этого я хочу искать / фильтровать коммиты как по ветке, так и по сообщению коммита.

Но Gitlab поддерживает две конечные точки:

Поиск:

/ api / v4 / projects / 24 / search? Scope = commits & search = fixed

это будет фильтровать только по сообщениям, а не по ветвям.

Из коммитов api

/ projects /: id / хранилище / коммиты

хранилище commits

Даже эта поддержка только для нескольких параметров.

Но я хочу отфильтровать коммиты, сделанные для указанной c ветви.

1 Ответ

0 голосов
/ 18 апреля 2020

Не думайте, что вы можете получить отфильтрованный ответ как по сообщению, так и по ветке за один вызов API.

  1. Вы можете использовать api для коммитов, чтобы отфильтровать все коммиты по веткам, а затем отфильтровать их по сообщению в вашем приложении.

GET /projects/:id/repository/commits?ref_name=<your branch name>

Пример ответа:

[
  {
    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
    "short_id": "ed899a2f4b5",
    "title": "Replace sanitize with escape once",
    "author_name": "Example User",
    "author_email": "user@example.com",
    "authored_date": "2012-09-20T11:50:22+03:00",
    "committer_name": "Administrator",
    "committer_email": "admin@example.com",
    "committed_date": "2012-09-20T11:50:22+03:00",
    "created_at": "2012-09-20T11:50:22+03:00",
    "message": "Replace sanitize with escape once",   ----> Message
    "parent_ids": [
      "6104942438c14ec7bd21c6cd5bd995272b3faff6"
    ],
    "web_url": "https://gitlab.example.com/thedude/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
  }
]
Или вы можете сначала выполнить поиск по сообщению, а затем получить список ссылок, которым принадлежит фиксация, используя GET /projects/:id/repository/commits/:sha/refs Однако это повлечет за собой два вызова API: один для получения фиксаций, отфильтрованных по сообщению, а затем для получить список ссылок, которым принадлежит коммит.
[
  {"type": "branch", "name": "'test'"},
  {"type": "branch", "name": "add-balsamiq-file"},
  {"type": "branch", "name": "wip"},
  {"type": "tag", "name": "v1.1.0"}
 ]
...