jandoubek / pvs-2020-lectures

Project for PVS lecture in fall 2020
0 stars 0 forks source link

Spolupráce v rámci repozitáře a branchů #37

Closed SachCZ closed 3 years ago

SachCZ commented 3 years ago

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:

Č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.

jandoubek commented 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í.

Je to funkční a těším se jak se s tím popereme.

pakk-minidose commented 3 years ago

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.

hetsko commented 3 years ago
  • 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?

  1. Myslím, že jde nějak force pushnout i divergovanou branch, ale to je asi celkem prasárna.
  2. Smazat branch na githubu a pak ji "znovu vytvořit" tím, že pushnu tu změněnou ode mě, -- "" --
  3. Vytvořit novou "staging" branch a pushnout to do ní.
  4. Neměl jsem rebasovat lokálně, ale pomocí extra pull requestu tady na githubu ... na každou branch budeme dělat jeden "zbytečný" pull request navíc a pak jich bude plná historie, to je ok?
  5. Místo rebasu dělat obyč merge commit. To jde i lokálně, bez extra pull req.

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í.

SachCZ commented 3 years ago

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).

hetsko commented 3 years ago

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.