Страницы

Поиск по вопросам

вторник, 27 ноября 2018 г.

Cкачать (fetch) с GitLab содержимое запроса на слияние (merge request)

Сервер Gitlab, организую работу через запросы на слияние (merge request, pull request).
При создании запроса хотелось бы иметь URL, из которого Jenkins смог бы выкачивать последний коммит ветки, которая предлагается к слиянию.
Есть ли возможность в Gitlab получить такой URL?
какой-нибудь alias к ветке, предлагаемой к слиянию? автоматически создаваемый предварительный коммит? (т.е. что бы получилось, если прямо сейчас нажать кнопку Merge Request?
Знаю, что-то подобное возможно в Gitlab CI и GitHub CI, на этих коммитах даже тесты прогоняются. Поэтому возможен и третий вариант:
Работать с Jenkins как с Gitlab CI?
Перейти полностью на Gitlab CI - не вариант, это будут неоправданные затраты.


Ответ

автоматически создаваемый предварительный коммит? (т.е. что бы получилось, если прямо сейчас нажать кнопку Merge Request?
Фича пока не реализована, можно проголосовать.
какой-нибудь alias к ветке, предлагаемой к слиянию?
Реализовано. На каждый merge request гитлаб создаёт внутри себя отдельный указатель в refs/merge-requests. Нужно просто настроить свой репозиторий, чтобы при git fetch забирать эти указатели.
Открываем .git/config, находим в нём блок, соответствующий репозиторию.
[remote "origin"] url = https://gitlab.com/gitlab-org/gitlab-ce.git fetch = +refs/heads/*:refs/remotes/origin/* Добавляем в него строку +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*. Теперь должно выглядеть так:
[remote "origin"] url = https://gitlab.com/gitlab-org/gitlab-ce.git fetch = +refs/heads/*:refs/remotes/origin/* fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/* Обновляем данные:
$ git fetch origin From https://gitlab.com/gitlab-org/gitlab-ce.git * [new ref] refs/merge-requests/1/head -> origin/merge-requests/1 * [new ref] refs/merge-requests/2/head -> origin/merge-requests/2 Теперь можно создать новую локальную ветку, отслеживающую соответствующий merge request.
$ git checkout merge-requests/1 Branch merge-requests/1 set up to track remote branch merge-requests/1 from origin. Switched to a new branch 'merge-requests/1'
Примеры взяты из документации GitLab. Там же есть более подробные инструкции.

Комментариев нет:

Отправить комментарий