RUGitHubInstall

Выпуски в main, бета в ветке beta

Решение владельца 28.09.2026. Заменяет ADR-0017; из него действуют: выпуск — метка vX.Y.Z, обновление назад не ходит, бета — выбор владельца.

В main живут только выпуски. Вся работа после 0.4.8 (0.4.9 и дальше) идёт в ветку beta и попадает в main выпуском. Бета-обновления — это Update branch beta: решает ветка. iva beta и кнопка «🧪 Обновления» ставят ветку beta и, для прежних бета-сборок, флаг iva.beta=true; iva stable возвращает ветку main и снимает флаг. Не записалась ветка — команда отказывает и флаг не трогает. Прежний выбор беты (флаг при main или без ветки) обновление переводит на ветку beta и переписывает iva.updateBranch один раз; своя ветка (release/<v>) остаётся как есть. Обновление ни в одной ветке не уводит установку назад: цель — предок установленного коммита значит «уже последняя». Активного коммита нет в зеркале — отказ: безопасность перехода не доказать. Ветка beta недоступна — отказ одной строкой, а не HEAD зеркала. Откат только явный: repair.sh, iva rollback.

install.sh с IVA_BETA=1 всегда ставит ветку beta (чужой BRANCH — строка предупреждения), над существующей установкой пишет выбор в зеркало и .git до передачи обновлятору; установка беты: curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/beta/install.sh | IVA_BETA=1 bash. repair.sh идёт только за настроенной веткой; на main не откатывает установку, чей коммит есть в любой ветке origin и новее выпуска; origin не ответил — ремонт отменён, ничего не сброшено. Вся сеть ремонта (головы, ветка, метки) идёт до сброса, сброс один; прежний флаг при main ремонт переводит на beta, как обновлятор. Установку любой версии, 0.4.8 включительно, переводит на бету beta.sh: curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/beta/beta.sh | bash; он называет прежнюю ветку и проверяет, что активная версия сменилась.

Обоснование. Обновлятор 0.4.8 и старше выбора не знает и ставит вершину своей ветки. Пока принятые правки ложились в main, кнопка «Обновить» у каждой старой установки ставила непроверенную вершину: выбор ADR-0017 до них не доходил. Когда в main только выпуск, старый обновлятор сам ставит выпуск, а бету получает только тот, кто её выбрал.

Цена. Две ветки: выпуск — это слияние beta в main с меткой, исправления идут в beta и доходят до main следующим выпуском, бэкпортов по-прежнему нет. Установка 0.4.8 не узнает о бете, пока владелец сам не запустит beta.sh или не обновится до выпуска с iva beta.

Отвергнутые альтернативы. Одна ветка с метками (ADR-0017) — старый обновлятор ставит вершину. Принудительный перевод старых установок на выпуск кодом — такого кода у них нет.

View original Markdown ↗