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 | 1838
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.0
jako~2.2
, tak by se ticomposer 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
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