Composer: přechod na novou verzi Nette a řešení updatů vůbec

- ludek
- Člen | 83
Zdravím, mám projekt založený kdysi jako sandbox
s composerem přiinstalovanou Nette a pár rozšíření.
V souboru composer.json mám
"require": {
"php": ">= 5.3.7",
"nette/nette": "~2.2.0",
"dg/adminer-custom": "~1.5",
"uestla/twigrid": "*",
"voda/date-input": "~1.0.0"
},
Nějak jsem si myslel, že přechod na novou verzi Nette provedu prostě
zadáním composer update.
Tím způsobem jsem ale došel k verzi 2.2.8. Když chci 2.3.1, musím ručně
upravit require na
"nette/nette": "~2.3.0"
Když jsem to provedl, aktualizace se udělala a projekt funguje dál – asi tam nemám nic, co by nebylo kompatibilní.
První otázka:
To je normální chování? Je to myšleno tak, že když se změní druhé
číslo verze, dají se očekávat větší změny a tak to vývojář musí
přepsat po úvaze sám?
Návrh: šlo by prosím do dokumentace https://doc.nette.org/cs/ doplnit nějakou sekci, která by se jmenovala třeba „Přecházení na novější verze Nette“ a tam by to bylo osvětleno?
S přechodem na novější verze Nette mám docela problém. Programuju jen občas něco, podle toho, co můj zaměstnavatel potřebuje a nemůžu pořád sledovat vývoj a postupně updatovat všechno od verze k verzi, nedostanu na to čas. Výsledkem bohužel je, že mám asi tak 10 projektů na různých verzích Nette podle toho, jak vznikaly nebo když se nějak měnily. I se mi stalo, že jeden z nejstarších a největších je pořád na 0.9 (Nette 0.9.7, dibi, datagrid Romana Sklenáře), potřebuju ho zásadně upravit podle požadavků a v podstatě mě čeká kompletní přepsání, jinak to asi nedám dohromady.
Druhá otázka:
Jak nové verze Nette řešíte vy? Snažíte se u všech projektů pořád
udržovat na špici vývoje?
Dík.

- Jan Tvrdík
- Nette guru | 2595
To je normální chování?
Ano, viz dokumentace ke Composeru. Dočteš se tam taky, že kdybys tu
závislost zapsal místo ~2.2.0 jako ~2.2, tak by se
ti composer update nainstaloval aktuální Nette 2.3.1.
nemůžu pořád sledovat vývoj a postupně updatovat všechno od verze k verzi
Je takový problém pokaždé, když se po čase vrátíš k projektu, tak
jako první věc zavolat composer update?

- hrach
- Člen | 1844
nemůžu pořád sledovat vývoj a postupně updatovat všechno od verze k verzi
Je takový problém pokaždé, když se po čase vrátíš k projektu, tak jako první věc zavolat composer update?
To byl povzdych nad tim, ze mu chybi v doce changelog.
@ludek changelog najdes ve foru, zkus ty „hlavni“ verze: https://forum.nette.org/…cements-news

- ludek
- Člen | 83
Jan Tvrdík napsal(a):
…kdybys tu závislost zapsal místo~2.2.0jako~2.2, tak by se ticomposer updatenainstaloval aktuální Nette 2.3.1.
No právě, že jsem to nenapsal, ale převzal z distribučního balíčku, ze sandboxu. Proto mě zajímalo, proč je závislost uvedena právě tak.
Jinak snad rozumím tomu, že když napíšu ~2.2, nainstaluje
se mi všechno, co nebude mít jako první číslo 3 (vysvětleno
tady).
Je takový problém pokaždé, když se po čase vrátíš k projektu, tak jako první věc zavolat
composer update?
Composer tu zase není tak dlouho. Ale postup teda je: vrátím se ke
starému projektu, zjistím jeho verzi Nette, podívám se jaká je
nejnovější, podívám se do composer.json, opravím
require (když je potřeba), dám composer update,
pročítám changelogy, opravuju kód, testuju, jestli se něco nerozbilo.
Asi by bylo lepší přecházet na nové verze se všemi projekty průběžně, ale to se mi bohužel nedaří. V běžném provozu na to není čas a roli hraje i riziko neodhalených chyb, kterými bych jakoby záměrně narušil práci uživatelů z jejich pohledu jen proto, abych měl nejnovější verzi něčeho. Při menších úpravách je to taky problém, protože je obvykle třeba provést něco velmi rychle, což mě nutí zachovat stávající stav. A to ještě když jsou v tom zamontované nějaké addons (za které jsem vděčný), které třeba nejsou updatované pro nejnovější verzi.
Update Nette teda většinou provedu až když musím udělat nějakou velkou úpravu nebo rozšíření projektu a nechci to dělat postaru, případně chci využít nějakou novou vlastnost Nette. Je to otravné a komplikované, ale ten kdo mi zadává práci jaksi má protihodnotu: „trvalo mi to“ (páč jsem složitě updatoval framework a addony), „ale tady máte krásný nový modul na sledování pohybu zásob“.
Proto mě zajímá, jak se s tím vypořádávají ostatní:
Updatujete všechno průběžně?
Dostáváte se do takových situací jako já a hasíte jen požáry?

- Pavel Kravčík
- Člen | 1206
Co funguje, na to se nešahá. :) Co nefunguje, na to se nešahá, protože toho začne nefungovat víc. :)
- Však si odpověděl sám, většinou nemá smysl updatovat jen kvůli update. Ale pokud se řeší větší změny – tak to smysl má. Vždy by ta změna měla být efektivní, což se dá jednoduše zjistit z rovnice =>
- Kolik mi to zabere času
- Co mi to přinese do budoucna (ušetří mi to čas na další požadavky)
- Pomůžeme mi to splnit požadavek klienta/šéfa