Jak udržet větve ve vývoji (v Gitu) konzistentní? rubrika: Návrh

7 Tomáš Tichý
položil/-a 29.5.2014

Dlouhodobě řeším u jednoho projektu, jak správně nastavit procesy práce s Gitem. Řekněme, že mám nějakou produkční větev, na které se řeší pouze bugfixy a už by se teoreticky neměly přidávat žádné nové vlastnosti. A pak je vývojová větev. Na té se samozřejmě musí opravovat stejné chyby, jako se řeší na produkci a navíc jsou zde vyvíjeny nové vlastnosti. Po určitém čase se vývojová větev prohlásí za produkční, stará produkční se odstaví a jede se od znova. Potud teorie funguje fajn.

Kámen úrazu je v tom, že vydávání nových verzí a přidávání funkcí je vysoká politika, kterou moc nemám šanci ovlivnit. Snaha je zákazníka tlačit k co nejčastějším novým verzím, raději s méně novými funkcemi a mít obě větve co nejkonzistentnější. Jenže znáte zákazníky a víte, že to vždycky úplně dobře nejde. Že velikost verzí občas přeroste přes hlavu a chyby je pak potřeba opravovat na dvou nijak nesouvisejících kódech. A úplné peklo nastává, pokud si zákazník vzpomene, že by potřeboval nějakou novou vlastnost nasadit v předstihu. Zvlášť když nejde o triviální změnu barviček na pozadí.

Řešili jste nějakou podobnou situaci, kdy jste museli vyvíjet souběžně na dvou větvích, stejné vlastnosti a udělat tak dvakrát víc práce úplně zbytečně? Jak podobnou situaci řešit?

odkaz
8 siq
odpověděl/-a 29.5.2014

Ved presne na riesenie takychto problemov Git vznikol. Nechcem ta teda hned obvinovat ze si Git nepochopil, ale z tvojej otazky to naozaj vyzera ze ho pouzivas ako SVN. Najjednoduchsie a najpriamociarejsie riesenie je kazdu novu vlastnost, alebo bugfix vyvijat vo vlastnej branchi. Po skonceni vyvoja potom tuto branch mergnes kam potrebujes.

Povedzme ze mas tieto branche:
master - aktualny produkcny kod
development - aktualne vyvijany kod

Povedzme ze development je v predstihu o niekolko commitov. Zrazu sa zisti bug na produkcii - nefunguje odhlasenie.
Postup bude potom nasledovny:

  1. Vytvoris novy branch z mastru, povedzme ze sa bude volat "BUG_logout". Nazvoslovie nie je podstatne, treba si vybrat nejaky system a dodrziavat ho
  2. Opravis chybu, commitnes ju, a pushnes ju do BUG_logout
  3. Kod sa otestuje
  4. Mergnes BUG_logout do mastru, nasadis kod
  5. Mergnes BUG_logout do developmentu
  6. ???
  7. Profit

Dufam, ze som to velmi nepoplietol :), som teraz dost chory. Ak nie, tak sa ospravedlnujem. Ak mes nejake dalsie otazky, tak sa kludne pytaj.

Komentáře

  • Tomáš Tichý : Teorii celkem znám, ale v praxi to vždy na něco narazilo. Třeba mergování - dokud jsou si kódy alespoň trochu podobné, pak fajn. Ale když je develop totálně refaktorovaný... Nová funkce závisející na jiných funkcích, které se ještě nesmí nasadit... To asi jinak než se zákazníkem vyřešit nejde, ne? 29.5.2014
  • siq : Aky dlhy mate vyvojovy cyklus? Idete agile, alebo waterfall? 29.5.2014
  • Martin Mystik Jonáš : Pokud děláte totální rafketoring souběžně s vývojem nových featur tak v tom je ten problém. Zkuste to oddělit. Udělám release, pak případně udělám ten totální refkatoring, který ale nezmění žádnou funkčnost, takže ho můžu rovnou nasadit. A pak až začnu vyvíjet nové features. Snažit se dělat oboje zaráz je na neřešitelný problém. 30.5.2014

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.