Více adresářů vendor pro různé verze aplikace

jedlicka
Člen | 70
+
0
-

Zdravím,

měl bych dotaz, zda je možné nějak nastavit/ovlivnit cestu k adresáři vendor.

Možná popíšu svůj problém a bude existovat i jiné řešeni.

Přecházíme s Nette aplikací na novou verzi PHP. Na Gitu jsme si vytvořili novou větev pro přechod/ladění/testování. Z důvodu přechodu na vyšší verzi PHP jsme museli aktualizovat vše ve vendor, který je taky na Gitu.
Na masteru ovšem stále probíhá vývoj aplikace (a zasahujeme i do vendor), kterou potřebujeme průběžně mergovat do nové větve. Ovšem potřebujeme, aby se vendor nijak nemergovalo, tj. zůstalo oddělené.

Nějaký nápad, řešení?

Děkuju moc.

Martin

Pavel Kravčík
Člen | 1194
+
0
-

K tomu slouží ideálně composer.lock, který budeš commitovat. Vendor dej do .gitignore. Každá větev pak bude mít vlastní composer.lock ve kterém budou různé verze fungující v daném PHP.

Při vývoji pak používáš pouze composer install – to vezme verze z locku. Při dlouhodobějším vývoji, abys nemusel stále pouštět composer při přepínání – je v pohodě udělat si dvě složky „projekt-master“ „projekt-velka-vetev“. Stačí dát git clone ssh://git.repo projekt-velka-vetev.

Plus do composer.json si můžeš do každé větve přidat php": ">= 8.2.

nightfish
Člen | 516
+
0
-

@jedlicka K tomu, co popsal Pavel ještě dodám, že v composer.json (config -> vendor-dir) (https://getcomposer.org/…06-config.md#…) lze nastavit cestu k adresáři vendor. Můžete tedy v každé větvi mít nastavený jiný adresář a tím pádem při mergi nebude docházet ke konfliktům.
Nicméně osobně preferuji vendor neverzovat.

Marek Bartoš
Nette Blogger | 1260
+
0
-

a zasahujeme i do vendor

Proč? :( To se přece nedělá…

Pokud chcete docílit toho, aby se při začlenění jedné větve do druhé neobjevovaly konflikty, tak můžete do .gitattributes přidat /vendor -merge a složka se nikdy nemergne

Pavel Kravčík
Člen | 1194
+
0
-

A pokud nutně potřebujete zasahovat do vendoru (což tedy může hodně zhoršit schopnost aktualizovat) je lepší zvolit patche.

//composer.json (např. fix pro datagrid aby šlo s BS5)
"config":
{
	"allow-plugins":
	{
		"cweagans/composer-patches": true
	}
},

"extra":
{
	"patches":
	{
		"ublaboo/datagrid":
		{
			"Fix BS5": "patch/datagrid.patch"
		}
	}
}