API gitlab - как я могу создать ветку из проблемы - PullRequest
1 голос
/ 08 апреля 2019

В git lab вы можете создать проблему, затем в рамках проблемы вы можете создать ветку.Эта ветка связана с проблемой (я думаю из-за номера проблемы в начале названия ветви), так что когда вы делаете запрос на слияние в этой ветке, он автоматически закрывает проблему.

Так что мой вопросэто - как вы можете сделать это через API?Я могу создать проблему, но в API проблемы нет, насколько я вижу, элемента управления для создания связанной ветви.

Возможно ли это?

Было бы неплохобыть в состоянии создать проблему с веткой за один раз - но я не думаю, что это возможно?

Ответы [ 2 ]

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

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

Однако это соответствует тому, как следует разрабатывать API RESTful.Если вы хотите создать ветку, вам нужно сделать POST-запрос к API ветвей.

POST /projects/:id/repository/branches

Как вы уже выяснили, GitLab неплохо умеет автоматически связывать проблемы, MR и ветки.Чтобы ветка была связана с проблемой, просто запустите ветку с идентификатором проблемы.Однако обычно достаточно, чтобы запрос на слияние был связан с проблемой.На мой взгляд, вы не должны беспокоиться о ветке.Позже вы можете получить доступ к ветви через проблему-> MR-> ветка

Запросы на слияние связаны с проблемами, когда текст описания MR ссылается на проблему (например, # 1).Если вы добавите идентификатор проблемы в оператор Closes , проблема также будет закрыта после разрешения MR.

Таким образом, вы можете просто создать ветку с помощью API, назвать ее по своему желанию.,Затем создайте MR из этой проблемы и включите Closes #1 в описание MR, где 1 - это идентификатор вашей проблемы.

Кроме того, я бы порекомендовал использовать более сложный клиент REST.Вам не нужно разбирать идентификатор проблемы самостоятельно.Это правильно установлено как поле в ответе JSON.

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

Хорошо - это, возможно, не лучший ответ, но вот что я придумал для временного решения (в linux bash):

  1. Поднять ответ магазина проблемы в cmd_resp
  2. Извлеките идентификатор проблемы: echo $cmd_resp | grep -o -P '(?<=iid":).*(?=,"project_id)'. Где найти идентификатор проблемы путем поиска: iid":<ISSUE-ID>,"project_id
  3. Создайте ветку с именем: <ISSUE-ID>-some-branch-name - имея идентификатор проблемы в начале имени ветви, gitlab автоматически устанавливает связь с этой проблемой.

Итак, это довольно простой подход, но он не очень интегрирован. Я все же предпочел бы сделать это с точки зрения проблемы.

...