3.6 KiB
title, lastUpdated
| title | lastUpdated |
|---|---|
| Model gałęzi i wydań | 2026-07-22 |
Model gałęzi i wydań
OmniRoute stosuje model wydań oparty na równoległych cyklach: dedykowana gałąź
release/vX.Y.Z dla aktywnego cyklu, main dla opublikowanej linii oraz niezmienny
tag vX.Y.Z, gdy dany cykl trafia do produkcji. Widok commitów lądujących na
release/* oraz na main jest oczekiwany — to nie pomyłka.
Szczegóły dla maintainerów znajdują się w CLAUDE.md (Hard Rule #21) oraz w
RELEASE_CHECKLIST.md. Ta strona to publiczne
podsumowanie skierowane do contributorów.
W skrócie
| Ref | Rola |
|---|---|
release/vX.Y.Z |
Aktywny cykl — codzienna praca deweloperska i merge PR-ów dla tej wersji |
main |
Opublikowana linia — przyjmuje cykl przez squash-merge w momencie wydania |
vX.Y.Z (tag) |
Znacznik wydania — niezmienny wskaźnik „co zostało wydane”, tworzony w momencie release |
flowchart LR
A["feat/fix branch"] --> B["PR → release/vX.Y.Z"]
B --> C["release/vX.Y.Z tip"]
C --> D["Release PR squash-merges → main"]
D --> E["Tag vX.Y.Z"]
C --> F["Next cycle: release/vX+1 cut from frozen tip"]
Na którą gałąź celować PR?
Celuj w aktywną gałąź release/vX.Y.Z — nie w main.
- Znajdź najwyższą otwartą gałąź
release/v*(przykład w momencie pisania:release/v3.8.49). - Utwórz gałąź od jej tipa (
git fetch+ checkout / rebase na nią). - Otwórz PR z base = ta
release/vX.Y.Z.
main nie jest codzienną gałęzią integracyjną. PR-y otwarte względem main
zazwyczaj wymagają zmiany celu (retarget) przed merge.
Zamrożenie wydania (równoległe cykle)
Gdy wydanie jest uzgadniane, otwierane jest issue-znacznik z etykietą release-freeze.
To nie wstrzymuje rozwoju:
- Zamrożona
release/vX.Y.Znależy do kapitana wydania (release captain) tego shipu. - Kolejny cykl
release/vX+1jest odcinany od zamrożonego tipa, dzięki czemu contributorzy mogą dalej lądować pracę. - Otwarte PR-y, które nadal celują w zamrożoną gałąź, powinny zostać przekierowane
(retarget) na aktywną (najwyższą) gałąź
release/v*.
Sprawdź, czy jest otwarte zamrożenie, zanim założysz, że wybrana gałąź jest gotowa do merge:
gh issue list --repo diegosouzapw/OmniRoute --label release-freeze --state open
Mechanika merge (etykieta właściciela queue → Mergify) jest opisana w
MERGE_TRAIN.md.
Po co i gałąź, i tag?
| Artefakt | Czas życia | Cel |
|---|---|---|
release/vX.Y.Z |
Cykl w toku | Zbiera zrecenzowane PR-y, utrzymuje CI na zielono, jest base PR-ów |
Tag vX.Y.Z |
Na zawsze | Oznacza dokładne bity, które trafiły do npm / GitHub Releases |
Gałąź to warsztat; tag to zapieczętowana paczka. Po squash-merge do
main kolejny cykl kontynuuje na release/vX+1 bez czekania na zakończenie
poprzedniego release PR.
Powiązane dokumenty
- CONTRIBUTING.md — setup, testy, checklista PR
- RELEASE_CHECKLIST.md — walidacja przed wydaniem
- MERGE_TRAIN.md — kolejka merge i zapasowy train
- RELEASE_GREEN.md — utrzymanie zielonego tipa wydania