Closed SachCZ closed 3 years ago
Mě se to líbí. Bude to chtít trochu disciplíny a pokory. A hlavně ohleduplnosti ... pracujete spolu tak přemýšlejte jak vaše práce může ovlivnit ostatní.
Pokud se Pepík rozhodne, že komitovat průběžně nebude, a všechno navalí v posledním monstr komitu v neděli večer. Tak Filip nebude mít čas a možná ani chuť to o půlnoci zrevidovat. A release se nestihne.
Pokud bude okolo neděle víc mergů do developu pak to bude trochu rizikový, kvůli možným interferencím změn.
Je to funkční a těším se jak se s tím popereme.
I'm in. Upřímně by se mi pro vývoj hodila i parciální verze toho, co mají ostatní, třebaže to není úplně hotové - například v aktuálním mainu se v popisu nezobrazuje hodinová dotace ani počet kreditů, tak je dost těžké kontrolovat, jestli třeba CreditsSlider funguje dobře - přitom se mi nechce implementovat nějakou vlastní verzi pro debugging, protože to
Takže za mě palec nahoru.
- merge do develop - dny (každých pár dní merge od člena teamu)
Jediné, co si myslím, že v dev bude stejně vždy nanejvýš jeden nebo dva merges na hlavu - víc času asi nikdo nemáme a s blížícím se koncem semestru to bude jenom horší. Ale na principu by to dle mého názoru nic měnit nemělo.
- Pepík si vytvoří brach feature:export_button
- Do této branche commituje progress a průběžně pushuje (ideálně i víckrát denně) - kód nemusí být funkční ani krásný, ale sdílí svůj postup s ostatními, ktří mu třeba mohou dát rady atd.
- Pepík má první použitelnou verzi - rebasne svůj kód na develop a vytvoří pull request do branche develop
Pomoc. Jestli jsem špatně pochopil postup, tak mě zastavte, ale jinak: Mám nový kód na svojí feature
branch, všechno pushnuté. Když teď rebasnu, lokálně u mě, na develop
, tak mi moje lokální branch oddiverguje a tím ztratím možnost pushnout. Co dělat?
Vynechat rebase/merge z developu úplně by to sice taky vyřešilo, ale to bychom obcházeli pointu toho workflow. Tak prosím o upřesnění.
V tomhle konkrétním případě bych použil prostě force push. Jak se píše tady .Jestli tomu správně rozumím, tak to že jsi rebasnul lokálně znamená, že se změnili hashe všech commitů, které jsou nad base brach. To způsobuje ten problém. Tím, že na této konkrétní future branchi s nikým nespolupracuješ, tak ani nevadí, že forcneš změnu těchto hashu i na remote ne jen lokálně.
Narážíme tady ale na větší problém, který je absolutně moje chyba a měli bychom ho adresovat.
Chápu li to správně, tak není úplně clean dělat rebase na branchi, která už je pushnutá.
Myslím, že správný postup by mohl být merge develop -> future a pak oficiální merge s review etc. future -> develop (jak zmiňuje na to stack owerflow). Toto je tvůj bod 4., myslím že ta historie nás tolik nestresuje, ale nejsem expert.
Bylo by dobré, kdyby se k tomuto vyjádřil někdo zkušenější.
Dej sem pak vědět jak dopadl force push (basicly to samé jako bys tu remote branch deletnul a znovu pushnul).
Force pushnul jsem a vypadá to, že to fungovalo. Jenom pro zajímavost, tady v této odpovědi píšou, že existuje hezčí force push git push --force-with-lease
, který sám selže, když by ten force push měl přepsat nové commity od někoho jiného, o kterých ty sám nevíš (tj. ty co přibyly od tvého posledního pull).
A ano, souhlasil bych, že nejlepší by byl normální merge commit z develop
.
Pustil bych se do následující věci, kterou bych připravil a mohli jsme s tím pracovat:
Měli bychom 2 hlavní branche main, develop. Pokusil bych se udělat aby tyto branche byli push protected (ještě nevím jak moc je toto možné, ale mělo by jít - pokud ne tak to budeme pouze striktně dodržovat). Tj. do těchto větví by se přidával kód pomocí merge requestů.
Na obou těchto větvích by byla nastavena řada checků (sonar cloud check, build aplikace prochází, testy prochází atd. ). Do větve develop by navíc byl check, že kód musí projít alespoň jedním review.
Jak bych si představoval workflow:
Chci přidat button Exportovat předměty
Udělám user story
Pepík se toho ujme - strčí user story do sloupce In Progress v projektu
Pepík si vytvoří brach feature:export_button
Do této branche commituje progress a průběžně pushuje (ideálně i víckrát denně) - kód nemusí být funkční ani krásný, ale sdílí svůj postup s ostatními, ktří mu třeba mohou dát rady atd.
Pepík má první použitelnou verzi - rebasne svůj kód na develop a vytvoří pull request do branche develop
Automaticky proběhnou checky kódu, který se snaží mergnout a bude vyžádán review
Pokud všechny testy proběhnou v pořádku a aplikace se zbuildí, bude ještě potřeba aby kód někdo reviewnul
Pepík poprosí Filipa o review - Filip navrhne několik změn
Pepík commitne a pushne vyžádané změny a Filip approvne review
Kód se mergne do branche develop a je možné smazat větev feature:export_button
ostatní v teamu pracují obdobným způsobem, až existuje jakási verze, která může jít na internet
v ten moment mergneme branch devlop do branche main - to automaticky opět spustí všechny checky
pokud všechny checky projdou, kód se automaticky deployne na github pages a nová verze korespondující s mainem bude veřejně dostupná
Časové horizonty:
Doufám, že to dává aspoň trochu smysl. Prosím hoďte mi sem nějaké připomínky, nebo aspoň palec a já se do toho pustím.
EDIT: Dávám deadline do zítra večer na vyjádření, pak udělám user story a začnu to připravovat.