Release Branch — je větev v Git Flow, která se vytváří z develop pro přípravu konkrétního vydání. V ní se fixuje verze aplikace, opravují se poslední chyby a aktualizují metadata — bez přidávání nových funkcí. Podle Vincent Driessen, 2010, release větev odděluje přípravu vydání od aktuálního vývoje, což umožňuje provádět obě aktivity paralelně.
Hlavní body
release/X.Y.Z podle verze aplikace.Release Branch (větev vydání) — je dočasná větev v Git Flow, vytvořená z develop, když se tým rozhodne, že aktuální sada funkcí je připravena k vydání. Existuje přesně tak dlouho, jak trvá konečná příprava vydání — od několika hodin do několika dnů.
Hlavním účelem release větve je zmrazit konkrétní sadu funkcí pro vydání, aniž by se zastavil vývoj následujících verzí. Zatímco se release větev připravuje k vydání, ostatní vývojáři mohou pokračovat ve slučování feature větví do develop pro další vydání.
V release větvi se nevytvářejí nové funkce — pouze opravy chyb, aktualizace verze aplikace, lokalizace a dokumentace. Po dokončení všech prací se release větev sloučí do main (označí se jako vydání) a zpět do develop (aby se opravy chyb dostaly do budoucích verzí).
Podle Atlassian, 2024, jsou release větve kriticky důležité pro projekty s pravidelnými cykly vydání — zajišťují předvídatelnost a stabilitu procesu vydávání.
Životní cyklus release větve od vytvoření po odstranění zahrnuje několik fází. Pochopení každé fáze pomáhá týmu synchronizovat akce a vyhnout se chybám.
release/2.5.0. develop nadále přijímá feature větve pro další verzi.v2.5.0.Bod 6 — zpětné sloučení do develop — se často zapomíná, ale je kriticky důležitý. Bez něj se opravy chyb provedené v release nedostanou do develop a v příštím vydání se stejné chyby mohou objevit znovu.
Délka života release větve závisí na složitosti vydání a kvalitě kódu v develop. V průměru příprava trvá 2 až 5 pracovních dnů pro mobilní aplikaci střední velikosti.
V release větvi se provádí přísně omezená sada úkolů. Jakákoli odchylka od tohoto seznamu porušuje model Git Flow a vytváří rizika pro stabilitu vydání.
| Typ změn | Povoleno | Příklad |
|---|---|---|
| Verzování | Ano | Aktualizace versionName v build.gradle |
| Opravy chyb | Ano | Oprava crash při spuštění |
| Lokalizace | Ano | Přidání překladů pro nové obrazovky |
| Dokumentace | Ano | Aktualizace CHANGELOG a README |
| Nové funkce | Ne | Přidání nové obrazovky profilu |
| Refaktorování | Ne | Přepisování síťové vrstvy |
| Aktualizace knihoven | Opatrně | Pouze patch verze pro opravy chyb |
Pravidlo zákazu nových funkcí — nejdůležitější v release větvi. Pokud funkce nestihla vydání, čeká na další cyklus. Pokus o protlačení nedokončené funkce do release větve — hlavní příčina zpoždění termínů a chyb v produkci.
V release větvi se povinně aktualizuje číslo verze aplikace. Pro Android jsou to pole versionCode a versionName v build.gradle, pro iOS — CFBundleShortVersionString v Info.plist.
// build.gradle (app-level) — aktualizace verze v release větvi
android {
defaultConfig {
versionCode 42
versionName "2.5.0"
}
}
// Pro iOS — aktualizace Info.plist
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42
Začínající vývojáři často zaměňují release a hotfix větve, ačkoli jejich účel je zásadně odlišný. Chyba při výběru typu větve může vést ke zpoždění kritické opravy nebo narušení procesu vydání.
Pokud je chyba objevena během přípravy vydání (v release větvi) — jedná se o běžnou opravu chyby. Pokud je chyba objevena v produkci (na main) — jedná se o hotfix a vytváří se z main, i když release větev již existuje.
Jednotný standard pojmenování release větví zjednodušuje navigaci v repozitáři a umožňuje CI/CD systémům automaticky určit, že větev patří do procesu vydání.
release/2.5.0.release/merlin.release/2024-12-01.Formát release/X.Y.Z — preferovaný, protože explicitně spojuje větev s číslem verze, které bude přiděleno vydání. To zjednodušuje vyhledávání a automatické zpracování skripty CI/CD.
Zpětné sloučení (merge back) release větve do develop — jedna z nejdůležitějších a současně často přehlížených operací. Bez něj všechny opravy chyb provedené v release zůstanou pouze ve verzi vydání a nedostanou se do dalšího cyklu vydání.
Proces zpětného sloučení se provádí poté, co byla release větev již sloučena do main. Nejprve se release sloučí do develop, poté — odstraní. To zaručuje, že develop obsahuje všechny opravy provedené během přípravy vydání.
Po zpětném sloučení jsou možné konflikty — zejména pokud se v develop již objevily nové feature větve, které měnily stejné soubory. Vývojář odpovědný za vydání tyto konflikty řeší a pushuje develop na server.
Některé týmy používají rebase místo merge pro zpětné sloučení, aby historie zůstala lineární. Merge je však pro develop bezpečnější, protože nepřepisuje historii commitů, které již mohly být použity jinými vývojáři.
Podívejme se na celý cyklus práce s release větví: od vytvoření po odstranění po úspěšném vydání mobilní aplikace verze 2.5.0.
# 1. Vytvoření release větve z develop
git checkout develop
git pull origin develop
git checkout -b release/2.5.0
# 2. Aktualizace verze a opravy chyb
git add build.gradle
git commit -m "Bump version to 2.5.0"
# 3. Oprava chyb (pouze bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"
# 4. Odeslání release větve na server
git push origin release/2.5.0
# 5. Sloučení release do main
git checkout main
git pull origin main
git merge --no-ff release/2.5.0
git tag -a v2.5.0 -m "Release 2.5.0"
git push origin main --tags
# 6. Zpětné sloučení do develop
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop
# 7. Odstranění release větve
git branch -d release/2.5.0
git push origin --delete release/2.5.0
Příkazy 5 a 6 — dvojité sloučení — jsou kriticky důležité. Nejprve main obdrží kód vydání a tag, poté se develop synchronizuje s opravami chyb z release. Pokud se krok 6 přeskočí, opravy z vydání se nedostanou do dalšího cyklu vývoje.
Pro mobilní projekty s pravidelnými vydáními lze proces vytvoření release větve a aktualizace verze automatizovat pomocí CI/CD skriptů. GitHub Actions umožňuje vytvořit workflow, které po stisknutí tlačítka vytvoří release větev s automatickou aktualizací verze.
Pro mobilní projekty s pravidelnými vydáními lze proces vytvoření release větve a aktualizace verze automatizovat pomocí CI/CD skriptů. GitHub Actions umožňuje vytvořit workflow, které po stisknutí tlačítka vytvoří release větev s automatickou aktualizací verze.
# GitHub Actions — automatizace vytvoření release větve
name: Create Release Branch
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g. 2.5.0)'
required: true
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create release branch
run: |
git checkout develop
git checkout -b release/${{ inputs.version }}
git push origin release/${{ inputs.version }}
Často kladené otázky
Pouze jedna release větev současně, pokud dodržujete Git Flow. Přítomnost dvou aktivních release větví znamená, že se tým snaží vydat dvě vydání paralelně — to porušuje princip sekvenčních vydání a vytváří zmatek s verzemi.
Odstraňte commity nedokončené funkce z release větve pomocí git revert a odložte funkci do dalšího vydání. Nikdy nevydávejte nedokončenou funkcionalitu do produkce — technický dluh a potenciální chyby nestojí za spěch.
Pro jednoduchá vydání s jednou opravou lze release větev přeskočit a provést sloučení přímo z develop do main. Pro standardní vydání je však release větev povinná — fixuje verzi, izoluje přípravu a zajišťuje dvojité sloučení oprav chyb.
Použijte git revert v main k vytvoření nového commitu, který ruší všechny změny vydání. Poté odstraňte tag vydání příkazem git push origin --delete vX.Y.Z. Po opravě problémů vytvořte novou release větev se zvýšeným číslem patche.
Release candidate (RC) — je build artefakt, který prochází konečným testováním. Release branch — je Git větev, ze které se release candidate vytváří. Jedna release větev může vygenerovat několik RC buildů (RC1, RC2 atd.) s postupným opravováním chyb.
Shrnutí
release/X.Y.Z s číslem verze podle SemVer.Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také