Git.alt/Введение: различия между версиями
(Новая: == Введение в git.alt == <tt>git.alt</tt> — это сервер совместной разработки gear-репозиториев ALT Linux Team. == gear-репози...) |
Нет описания правки |
||
Строка 6: | Строка 6: | ||
Одной из подсистем <tt>git.alt</tt> является | Одной из подсистем <tt>git.alt</tt> является | ||
<tt>girar</tt> (архив gear-репозиториев); <tt>girar</tt> осуществляет доступ | <tt>girar</tt> (архив gear-репозиториев); <tt>girar</tt> осуществляет | ||
разработчиков к gear-репозиториям. Каждый разработчик имеет собственные | [[git.alt/Справочник#access|доступ]] разработчиков к gear-репозиториям. Каждый разработчик имеет собственные | ||
копии gear-репозиториев, в которые он может вносить, вообще говоря, достаточно | копии gear-репозиториев, в которые он может вносить, вообще говоря, достаточно | ||
произвольные изменения (предлагая, таким образом, включить эти изменения | произвольные изменения (предлагая, таким образом, включить эти изменения | ||
в очередную версию пакета). Реализована система почтовых уведомлений, | в очередную версию пакета). Реализована система [[git.alt/Справочник#email|почтовых уведомлений]], | ||
которая упрощает обмен изменениями. При этом фактический обмен и аккумуляция | которая упрощает обмен изменениями. При этом фактический обмен и аккумуляция | ||
изменений осуществляется средствами распределённой системы контроля версий <tt>git</tt>. | изменений осуществляется средствами распределённой системы контроля версий <tt>git</tt>. | ||
Строка 17: | Строка 17: | ||
окончательную версию пакета могут подготовить только один или несколько | окончательную версию пакета могут подготовить только один или несколько | ||
разработчиков, за которыми закреплён этот пакет (maintainers). Контроль | разработчиков, за которыми закреплён этот пакет (maintainers). Контроль | ||
осуществляется подсистемой | осуществляется подсистемой [[ACL]], и «неавторизированные» | ||
версии пакетов по умолчанию отвергаются (вместе с тем, сохранена возможность | версии пакетов по умолчанию отвергаются (вместе с тем, сохранена возможность | ||
для т. н. NMU, non-maintainer upload). | для т. н. NMU, non-maintainer upload). | ||
Строка 24: | Строка 24: | ||
Когда новая версия пакета окончательно подготовлена, разработчик делает | Когда новая версия пакета окончательно подготовлена, разработчик делает | ||
в gear-репозитории ''метку'' (tag) с криптографической подписью и инициирует запрос | в gear-репозитории ''метку'' (tag) с криптографической подписью и [[git.alt/Справочник#build|инициирует запрос]] | ||
на сборку пакета. Запрос обрабатывается сборочной системой <tt>girar-builder</tt> | на сборку пакета. Запрос обрабатывается сборочной системой <tt>girar-builder</tt> | ||
Сборочная система взаимодействует с ''кеширующим сервером'' gear-репозиториев. | Сборочная система взаимодействует с ''кеширующим сервером'' gear-репозиториев. | ||
Если запрос на сборку был обработан успешно, то собранные rpm-пакеты помещаются в репозиторий | Если запрос на сборку был обработан успешно, то собранные rpm-пакеты помещаются в репозиторий | ||
rpm-пакетов, а gear-репозиторий с новой меткой публикуется на кеширующем сервере. Названия | rpm-пакетов, а gear-репозиторий с новой меткой [[git.alt/Справочник#gears|публикуется]] на кеширующем сервере. Названия | ||
gear-репозиториев на кеширующем сервере совпадают с именами src.rpm-пакетов (это требование не | gear-репозиториев на кеширующем сервере совпадают с именами src.rpm-пакетов (это требование не | ||
является обязательным для gear-репозиториев разработчиков). Таким образом, кеширующий сервер | является обязательным для gear-репозиториев разработчиков). Таким образом, кеширующий сервер | ||
Строка 61: | Строка 61: | ||
Воздействовать на задания в отложенном режиме можно, в основном, двумя способами: | Воздействовать на задания в отложенном режиме можно, в основном, двумя способами: | ||
* Добавление новых пакетов, которые исправляют нарушения. | * [[git.alt/Справочник#build|Добавление]] новых пакетов, которые исправляют нарушения. | ||
Например, если у библиотеки изменилось имя (soname), то в репозитории могут образоваться неудовлетворённые зависимости на старое имя библиотеки. | Например, если у библиотеки изменилось имя (soname), то в репозитории могут образоваться неудовлетворённые зависимости на старое имя библиотеки. | ||
Тогда в задание можно добавить все пакеты, которые зависят от старой библиотеки, чтобы пересобрать их с новой библиотекой. | Тогда в задание можно добавить все пакеты, которые зависят от старой библиотеки, чтобы пересобрать их с новой библиотекой. |
Версия от 22:43, 1 марта 2009
Введение в git.alt
git.alt — это сервер совместной разработки gear-репозиториев ALT Linux Team.
gear-репозитории
Одной из подсистем git.alt является girar (архив gear-репозиториев); girar осуществляет доступ разработчиков к gear-репозиториям. Каждый разработчик имеет собственные копии gear-репозиториев, в которые он может вносить, вообще говоря, достаточно произвольные изменения (предлагая, таким образом, включить эти изменения в очередную версию пакета). Реализована система почтовых уведомлений, которая упрощает обмен изменениями. При этом фактический обмен и аккумуляция изменений осуществляется средствами распределённой системы контроля версий git.
Несмотря на то, что любой разработчик может внести изменения в пакет, окончательную версию пакета могут подготовить только один или несколько разработчиков, за которыми закреплён этот пакет (maintainers). Контроль осуществляется подсистемой ACL, и «неавторизированные» версии пакетов по умолчанию отвергаются (вместе с тем, сохранена возможность для т. н. NMU, non-maintainer upload).
Сборка (girar-builder)
Когда новая версия пакета окончательно подготовлена, разработчик делает в gear-репозитории метку (tag) с криптографической подписью и инициирует запрос на сборку пакета. Запрос обрабатывается сборочной системой girar-builder Сборочная система взаимодействует с кеширующим сервером gear-репозиториев. Если запрос на сборку был обработан успешно, то собранные rpm-пакеты помещаются в репозиторий rpm-пакетов, а gear-репозиторий с новой меткой публикуется на кеширующем сервере. Названия gear-репозиториев на кеширующем сервере совпадают с именами src.rpm-пакетов (это требование не является обязательным для gear-репозиториев разработчиков). Таким образом, кеширующий сервер предоставляет доступ к «официальным» gear-репозиториям, содержимое которых соответствует фактическим сборкам пакетов.
Задания и транзакции
Задание состоит из~одного или нескольких gear-репозиториев (и их меток), отправленных на сборку. Сборочная система сначала осуществляет первичную сборку пакетов. Если при первичной сборке пакетов возникли грубые ошибки, то задание автоматически отменяется. В противном случае, если все пакеты в задании успешно собрались, то открывается транзакция: генерируется временный репозиторий, в котором выполняется ряд проверок (вычисляются характеристики нового репозитория). По умолчанию переход в новое состояние разрешён, только если характеристики репозитория не ухудшились. Если же собранные пакеты ухудшают характеристики репозитория, то составляется список нарушений, и задание переводится в отложенный режим.
Характеристики репозитория
Сборочная среда, помимо прочих, выполняет следующие проверки:
- Неудовлетворённые зависимости (unmet dependencies).
- Если при помещении пакетов в репозиторий возникают новые неудовлетворенные зависимости, то по умолчанию такой переход не может быть разрешён.
- Тестовая пересборка пакетов
- в наибольшей степени обнаруживает взаимное влияние между пакетами. Эта проверка может быть довольно ресурсоемкой: должны быть пересобраны все пакеты, у которых в сборочной среде оказывается хотя бы один новый пакет из транзакции. Если же хотя бы один новый пакет их транзакции входит в базовую сборочную среду, то потребуется полная тестовая пересборка всего репозитория rpm-пакетов. Сборочная система фиксирует не только саму возможность пересборки, но и изменение зависимостей у пересобранных пакетов.
- Идентичность noarch пакетов
- при сборке на всех архитектурах.
- Нарушение ACL
- у какого-либо пакета в задании не относится, строго говоря, к характеристикам репозитория; однако включение его в общий список нарушений транзакции упрощает NMU.
Управление отложенными заданиями
Воздействовать на задания в отложенном режиме можно, в основном, двумя способами:
- Добавление новых пакетов, которые исправляют нарушения.
Например, если у библиотеки изменилось имя (soname), то в репозитории могут образоваться неудовлетворённые зависимости на старое имя библиотеки. Тогда в задание можно добавить все пакеты, которые зависят от старой библиотеки, чтобы пересобрать их с новой библиотекой.
- Разрешение нарушений.
Например, администратор git.alt может разрешить нарушение ACL, если «неавторизированная» версия пакета (NMU) содержит исправления критических ошибок.
Таким образом, задания могут переводиться в отложенный режим и позднее возобновляться. Если все нарушения были сняты, то выполняется транзакционный переход репозитория в новое состояние.