Sok fajta van az életben, sokunk rabja is párnak, de mivel ez egy fejlesztői blog, ezért most kód függőségről lesz szó, azaz hogyan függjön a projektünk egy plugintól/modultól/stb. Folytatás az előző post kiegészítéseként.
Submodult megismertük hogy nem para. Legalábbis a legtöbb esetben bőven megteszi. De mi van akkor ha változtatni akarunk egy submodul pluginen? Ez akkor probléma ha nincs jogunk felpusholni a változtatást, ugyanis ha a változtatásunkat bekommitáljuk a projektünkbe azután ha vki kicheckoutolja akkor a submodulunk commit id-je egy nem létező idre fog mutatni, ergo baj lesz. Submodulról azt kell tudni hogy ez a legegyszerűbb választás a mindennapi használathoz (mindemellett fontos betartani néhány alapszabályt, különben probléma lehet: pl kicheckoutnál submodule update használata, vagy épp submodul patchnél projektünk pusholása elött submodul pusholása). Viszont ha a fenti eset felmerülhet, érdemes elgondolkodni más alternatíván.
Braid
Tegyük fel patchelnünk kell egy használt plugint. Ha nem akarjuk megvárni amíg a patchünk bekerül a plugin repójába, vagy nem akarunk ilyenkor mindig forkokat a patchelendő pluginjeinkhez, használjuk a braid-et. Projetünkbe beépül a braides plugin. Rails pluginként való telepítéshez segítő opció van. Lehet patchelésünk után updatelni nyugodtan plugin repójából. Viszont ha pl saját pluginünket használjuk (azaz a miénk a remote repoja), és szeretnék a projektünkből a patchelt pluginunkat feltölteni a plugin repojába azt nem tudja (elvileg 0.6tól fogja tudni).
Subtree merge strategy
Hasonló a braidhez, annyiban különbözik hogy alap beépített git parancsokkal operál. Viszont ezek túl bonyolúltak. Ellenben vannak hozzá sake taskok amik megkönnyítik a használatát.
Giternal
Akiknek a pluginjeikhez hasonló kényelmes funkcionalitás szükséges (update, push) mint a projektjükhöz, azoknak ez ajánlott. Ezzel lehetőség van a braidnél említett patchelt plugin könnyű felpusholására a saját repójába.
Resources:
- Szép használható submodul leírás
- Braid, braid használat
- Subtree használat, subtree használat 2, subtree sake taskok
- Giternal, rövid használati útmutató, giternal telepítés
- External, external 2, external githubon
- Rails subprojectes linkek
- Összefoglaló dependency managmentről
Ez csak egy rövid összefoglaló volt a git kapcsán felmerülő lehetőségekről függőség kezelése kapcsán. Igazából a mindennapi használatban derül ki egyik-másik jobb/rosszabb tulajdonsága. Pl ha normálisan fejlesztenénk, azaz lenne egy master és egy development branchünk kapásból és egy új funkciót akarnánk ami egy plugint használna és azt submodulként akarnánk betenni azt jó tudni, hogy nem az adott branchez hanem a superprojekthez adja. Így ha átváltunk master branchre de még nem akarjuk betenni repoba egy új commitnál mert még fejlesztés alatt az új funkció akkor tehetjük pl ignorra a submodul mappáját.