🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
OmniRoute utilizza un modello di rilascio a cicli paralleli: un branch dedicato release/vX.Y.Z
per il ciclo attivo, main per la linea pubblicata e un tag immutabile
vX.Y.Z quando il ciclo viene rilasciato. È normale vedere commit arrivare sia su release/* sia su
main: non si tratta di un errore.
I dettagli per i maintainer si trovano in CLAUDE.md (Regola fondamentale n. 21) e
RELEASE_CHECKLIST.md. Questa pagina è il riepilogo pubblico
destinato ai contributor.
| Ref | Ruolo |
|---|---|
release/vX.Y.Z |
Ciclo attivo — sviluppo quotidiano e merge delle PR per quella versione |
main |
Linea pubblicata — riceve il ciclo tramite squash merge quando viene effettuato il rilascio |
vX.Y.Z (tag) |
Indicatore di rilascio — puntatore immutabile a «ciò che è stato rilasciato», creato al momento del rilascio |
flowchart LR
A["branch feat/fix"] --> B["PR → release/vX.Y.Z"]
B --> C["punta di release/vX.Y.Z"]
C --> D["Squash merge della PR di rilascio → main"]
D --> E["Tag vX.Y.Z"]
C --> F["Ciclo successivo: release/vX+1 creato dalla punta congelata"]
Il branch di destinazione deve essere il branch attivo release/vX.Y.Z, non main.
- Trova il branch
release/v*aperto con la versione più alta (esempio al momento della scrittura:release/v3.8.49). - Crea un branch a partire dalla sua punta (
git fetch+ checkout / rebase su di esso). - Apri la PR con base = quel
release/vX.Y.Z.
main non è il branch di integrazione per il lavoro quotidiano. Le PR aperte verso main
di solito devono cambiare destinazione prima del merge.
Quando è in corso la riconciliazione di un rilascio, viene aperta un'issue di riferimento con
l'etichetta release-freeze. Questo non interrompe lo sviluppo:
- Il branch
release/vX.Y.Zcongelato è affidato al responsabile di quel rilascio. - Il branch
release/vX+1del ciclo successivo viene creato dalla punta congelata, affinché i contributor possano continuare a integrare il proprio lavoro. - Le PR aperte che hanno ancora come destinazione il branch congelato devono essere reindirizzate al
branch
release/v*attivo, ossia quello con la versione più alta.
Verifica la presenza di un congelamento aperto prima di presumere che il branch desiderato accetti merge:
gh issue list --repo diegosouzapw/OmniRoute --label release-freeze --state openLe meccaniche di merge (etichetta queue del proprietario → Mergify) sono documentate in
MERGE_TRAIN.md.
| Artefatto | Durata | Scopo |
|---|---|---|
release/vX.Y.Z |
Ciclo in corso | Raccoglie le PR revisionate, mantiene la CI funzionante ed è la base delle PR |
Tag vX.Y.Z |
Permanente | Contrassegna esattamente ciò che è stato rilasciato su npm / GitHub Releases |
Il branch è l'officina; il tag è il pacchetto sigillato. Dopo lo squash merge su
main, il ciclo successivo prosegue su release/vX+1 senza attendere il completamento della
PR di rilascio precedente.
- CONTRIBUTING.md — configurazione, test, checklist delle PR
- RELEASE_CHECKLIST.md — convalida prima del rilascio
- MERGE_TRAIN.md — coda di merge e procedura di merge alternativa
- RELEASE_GREEN.md — mantenere funzionante la punta del branch di rilascio