Перейти к основному содержимому

🤝 Git и работа в команде ROSA

🎯 Цель раздела

В этом разделе вы:

  • освоите основы работы с Git для сопровождения пакетов;
  • научитесь синхронизировать локальные изменения с Automated Build Farm (ABF);
  • поймёте, как оформлять коммиты, работать с ветками и пул-реквестами;
  • узнаете, как проходит ревью и совместная работа в команде ROSA.

🧩 Git в контексте RPM-сопровождения

В экосистеме ROSA каждый пакет хранится в отдельном Git-репозитории на ABF. Репозиторий содержит:

  • .spec файл,
  • исходники (ссылки на tarball или патчи),
  • changelog,
  • служебные файлы (.abf.yml, .gitignore и др.).

Каждое изменение пакета фиксируется коммитом и может быть собрано через ABF.


⚙️ Настройка Git

Настройте имя и почту:

git config --global user.name "Ваше имя"
git config --global user.email "you@example.com"

Проверьте конфигурацию:

git config --list

💡 Используйте ту же почту, что и в вашем профиле на ABF.


🧱 Клонирование репозитория пакета

Откройте нужный пакет на сайте https://abf.rosalinux.ru и скопируйте ссылку на Git-репозиторий, например:

git clone https://abf.rosalinux.ru/rosa/hello.git
cd hello

🔄 Структура репозитория пакета

hello/
├── hello.spec
├── sources
├── .abf.yml
├── README.md
└── patches/
ФайлНазначение
hello.specИнструкции сборки
sourcesКонтрольная сумма исходников
.abf.ymlПараметры сборки ABF
patches/Папка для патчей
README.mdДокументация

🧰 Создание ветки для изменений

Никогда не работайте в master — создавайте отдельные ветки под каждую задачу:

git checkout -b update-hello-1.2

Вносите изменения (например, обновите Version в .spec), затем:

git add SPECS/hello.spec
git commit -m "Update to version 1.2"

🧩 Правила оформления коммитов

Следуйте единому формату:

<тип>: <краткое описание>

Типы изменений:

  • update: — обновление версии пакета;
  • fix: — исправление ошибок;
  • spec: — правки в SPEC-файле;
  • patch: — добавление или обновление патчей;
  • cleanup: — рефакторинг, форматирование.

Примеры:

git commit -m "update: bump to version 1.1.2"
git commit -m "spec: fix dependency on glibc-devel"

🚀 Отправка изменений на ABF

После коммитов отправьте ветку в удалённый репозиторий:

git push origin update-hello-1.2

На странице проекта в ABF появится предложение создать Pull Request (PR). PR — это запрос на вливание изменений, который проходит код-ревью.


🧾 Процесс ревью

  1. Ваш PR проверяет мейнтейнер или старший инженер;
  2. При необходимости комментируются строки кода или .spec;
  3. После утверждения PR объединяется в master;
  4. ABF автоматически запускает сборку пакета.

💡 Ревью — важный этап контроля качества. Даже мелкие правки должны проходить его, чтобы сохранить единообразие.


🧩 Настройка .abf.yml

Файл .abf.yml управляет поведением сборки в ABF. Пример:

sources:
- hello-1.2.tar.gz
patches:
- hello-fix-typo.patch
spec: hello.spec
build:
distribution: rosa2024.1
arch: x86_64

⚙️ Этот файл обязателен для корректной работы сборки через ABF.


🔗 Синхронизация с upstream

Если пакет основан на внешнем проекте (например, Fedora, Debian), регулярно обновляйте изменения из upstream:

git remote add upstream https://src.fedoraproject.org/rpms/hello.git
git fetch upstream
git merge upstream/master

⚠️ После слияния обязательно обновите changelog и пересоберите SRPM.


🧠 Мини-тест для самопроверки

ВопросОтвет
Где хранятся пакеты ROSA?В Git-репозиториях ABF
Что такое MR (Merge Request)?Запрос на вливание изменений после ревью
Почему нельзя коммитить в master напрямую?Чтобы избежать конфликтов и сохранить чистую историю
Что хранит .abf.yml?Настройки сборки ABF
Как обновить пакет из внешнего проекта?Через git fetch и merge из upstream

🧭 Итого

Теперь вы:

  • владеете Git-основами для сопровождения пакетов;
  • знаете, как работает ABF и ревью-процесс;
  • умеете создавать ветки, коммитить, оформлять PR;
  • готовы перейти к следующему шагу — автоматизации сборок и CI/CD.

Следующий документ — “CI/CD и автоматизация сборок”, где мы разберём, как организованы сборочные пайплайны в ABF и как автоматизировать публикацию пакетов.