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

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ludek
Člen | 83
+
0
-

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
+
+1
-

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 | 1838
+
+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?

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
+
0
-

Jan Tvrdík napsal(a):
…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.

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 | 1196
+
0
-

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