Соглашение об именовании веток разработки

Наши соглашения о названиях веток разработки гарантируют, что программное обеспечение создается по технологии непрерывной интеграции (CI) и может быть легко протестировано другими разработчиками.

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

Click-пакеты

Программное обеспечение, которое распространяется исключительно в виде click-пакета (а не как deb), использует только одну защищенную ветку master. Отдельные временные ветки разработки с произвольными названиями со временем могут быть созданы и объединены в master. Для маркировки и архивирования этапов истории разработки в идеале следует использовать теги Git или релизы GitHub.

Deb-пакеты

Чтобы помочь нам максимально упростить доставку нашего кода в Ubuntu Touch, наш CI автоматически создает наши репозитории Git в ряде архивов APT, размещенных по адресу http://repo.ubports.com/, в соответствии с именем ветки.

В репозиториях Git мы поддерживаем следующие ветки:

Ветки Git

Описание

Соответствующие APT-архивы

Имя

Базовый дистрибутив

main, ubports/latest

Здесь находится самая последняя версия Ubuntu Touch. В этой ветке допускаются любые изменения.

devel-<Ubuntu LTS> (например, devel-noble)

Последняя или предстоящая версия Ubuntu LTS.

devel-debian

Ветка Debian testing.

ubports/<major version>.x (например, ubports/24.6.x)

Здесь содержится код конкретной мажорной версии. Эта ветка отделяется от ветки main перед выпуском мажорного релиза и в дальнейшем служит основой для выпусков обновлений данной мажорной версии. В этой ветке допускаются только исправления ошибок и изменения, не нарушающие обратную совместимость.

<major version>.x (например, 24.6.x)

Ubuntu LTS на момент создания ветки.

ubports/focal

Отдельная ветвь ubports/<major version>.x, созданная после выпуска Ubuntu Touch 20.04 OTA-4.

focal

Ubuntu 20.04 LTS.

ubports/focal_-_<ext>

Ветви, использующие устаревшую систему «расширений ветвей» (branch extensions) для внесения изменений, затрагивающих несколько компонентов. Использование этой системы больше не рекомендуется.

focal_-_<ext>

Ubuntu 20.04 LTS.

personal/<user>/<name>, и любые другие ветки разработки.

Все остальные ветки могут использоваться для создания запросов merge requests или в иных целях. Система CI не выполняет сборку этих веток, если они не оформлены как запрос merge request.

Недоступно, за исключением случаев, когда это предлагается в виде MR (запроса merge request) для вышеупомянутых веток (см. ниже).

To ensure the main branch doesn’t miss any changes, all changes must be made against main branch first before backporting to the major release branches. An exception is when a change is not applicable to the main branch anymore due to other changes in that branch.

Примечание

Если следующая версия для разработки еще не готова к тестированию, а вам необходимо сделать изменения доступными для установки и проверки, допускается временно направить набор изменений (changeset) в ветку мажорной версии, чтобы собрать пакеты на ее основе. Когда набор изменений будет готов к сборке., его необходимо перенаправить в ветку main.

APT-архивы для запросов Merge Requests

Помимо упомянутых выше архивов, мы также создаем APT-архивы для запросов Merge Requests (MR) в репозиториях Git. Это позволяет тестировать результаты сборки на реальных устройствах с помощью ubports-qa перед имплементацией кода. Для каждого MR система CI выполняет сборку для тех же целевых платформ, что и для целевой ветки этого MR, а затем добавляет к ним суффикс _-_PR_<имя репозитория>_<номер MR> [1]. Например:

  • Для MR с номером 100, созданного для ветки main Git-репозитория lomiri (в то время как текущим релизом Ubuntu LTS является noble), будут созданы APT-архивы с именами devel-noble_-_PR_lomiri_100 и devel-debian_-_PR_lomiri_100.

  • Для MR с номером 125, созданного для ветки ubports/24.6.x Git-репозитория ubports/24.6.x, будет создан APT-архив с именем `24.6.x_-_PR_morph-browser_125.