Skip to main content

Внести изменения в репозиторий через Fork

Внести изменения в репозиторий через Fork Виды пользователей:

  • Мейнтейнер — пользователь с ролью GitLab developer в проекте репозитория. Обычно это разработчик, который постоянно работает над проектом.
  • Контрибьютор — пользователь без прав в репозитории, который хочет внести изменения.

Для контрибьюторов

Fork — это ваша персональная копия репозитория со старыми ветками и коммитами. Обычно их используют, если у вас нет прав вносить изменения в чужой репозиторий — создаётся дубль, и из него merge request в оригинал. Документация о Fork.

Чтобы внести изменения в репозиторий, в котором у вас нет прав:

  1. Зайдите в репозиторий и нажмите Fork в правом верхнем углу.

  2. Заполните поля и нажмите Fork project.

  3. Клонируйте репозиторий локально на компьютер:

    git clone https://gitlab.polygon.t-technologies.ru/[путь до вашего репозитория]
  4. Создайте ветку и в ней внесите изменения в проект.

  5. Создайте merge request из вашей копии в оригинальный репозиторий.

  6. Найдите мейнтейнера оригинального репозитория, отправьте ему merge request на согласование.

Если jobs упали, найдите мейнтейнера проекта и попросите его исправить проблему по инструкции.

Подтянуть актуальный master

На примере репозитория gitlab-runners-network-access:

По SSH

(!) Функционал не доступен

Выполните команды:

git remote add upstream ssh://git@gitlab.tcsbank.ru:7999/self-service/gitlab-runners-network-access.git
git fetch upstream
git checkout master
git rebase upstream/master
git push

По HTTPS

Выполните команды:

git remote add upstream https://gitlab.polygon.t-technologies.ru/self-service/gitlab-runners-network-access.git
git checkout master
git fetch upstream
git merge upstream/master
git push

Для мейнтейнеров

Проекты, которые создали с помощью Fork, не видят ENV-переменные вашего репозитория. Чтобы это исправить:

Через политики

Настройте параметр fork_whitelist в файле policy.yml.

Пример: policy.yml

merge_request:
fork_whitelist:
- src/**/* #путь в gitlab

О настройке политик

Когда правки вольются в master, Gitlab CI автоматически запустит пайплайн с ENV-параметрами, если были только затронуты файлы из fork_whitelist.

В интерфейсе Gitlab

  1. Настройте политику fork_whitelist в policy.yml.
  2. Откройте merge request.
  3. Перейдите на вкладку Pipelines.
  4. Нажмите Run pipelines.

Пайплайн запустится в контексте репозитория, и все ENV будут доступны.

Запустить пайплайн в Fork

fork_whitelist — политика, которая позволяет указать список файлов, при изменении которых через MR из форка репозитория в репозитории будет автоматически создаваться CI pipeline (с проектным токеном GitLab).

Все файлы должны попасть под маску для запуска пайплайна, в противном случае бот напишет комментарий со списком файлов, которые не попали под политику.

Поддерживаются глоб-маски.

В рамках fork pipeline могут быть выполнены только Job с такими правилами:

rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
 when: always

Также поддерживается инструкция:

rules: only: - merge_requests