git - 2 projekt 1 őssel

Tisztelt fórumtársak!

Van lehetőség olyat git-el, hogy 2 projektet fejlesztenék egy közös forráskóddal.

Például:
2 oldalnak ugyanaz a funkcionalitása csak egyikben vannak feature-k,amik a másikban nincsenek. Ez oda-vissza.
Viszont nagyon sok közös dolog van, például hotfixek, amik mindkettőben ugyanazok.

Első körben arra gondoltam, a 2 oldal 2 külön branch lenne és a kettőjük között tudnék váltani (bár tudom, kicsit lassabb lesz egy idő után).

Hogyan lehetne ezt szépen megcsinálni?

Köszönöm!

Hozzászólások

Én olyat még nem láttam, hogy több forrás van, és ez szépen meg legyen oldva. Tarts fenn egy forrást, ami konfigurációval szabályozható, esetleg deploy során egyes modulokat fel se telepítesz, végső esetben plugin rendszert építesz. Ha meg egy idő után a sok egyedi igény miatt túl sok lesz az eltérés és nem tudod lenyomni az ügyfelek torkán, akkor el kell gondolkozni, hogy már több külön projekted van, ami valaha hasonlított egymásra.

--

Lehet ugy, hogy van egy "main" branch, ahova a kozos dolgokat es a hotfixeket tolod. A ket projekt pedig kulon branchen, es a main agrol folyamatosan rebase. Az, hogy hosszu tavon mi a kenyelmes, az fugg attol is, hogy a main agon mennyi valtozas van.

Az, hogy mi a jó megoldás, azt te tudod leginkább eldönteni, hiszen több infóval rendelkezel a projektekről.
Alapvetően azon gondolkodj el, hogy a két feature ág mennyire üti egymást kódban.
Ha nem nagyon, akkor lehet, hogy azzal jársz jobban, ha csak egy ágon dolgozol, és kapcsolgathatóra csinálod a featureöket.

3 project:
- közös
- 1.project specifikus
- 2.project specifikus

composer szépen megoldja (feltéve ha PHP)

Annyi hogy a két project specifikus repo-ban a vendors-t tedd bele a gitignore-ba.

Ennél persze lehet még tovább bonyolítani, további alprojectekre bontani.

Mindenképp 3 ágban gondolkoznék, egy a közös dolgoknak, és 1-1 az egyedieknek.

Megkockáztatom, hogy nyelv és architektúra függően akár nem is egy repóm lenne hanem 3, ahol a közös rész tulajdonképpen egy library ami a két ráépülő projecttől függetlenül fejleszthető (innentől kezdve nem érdekes, hogy külön-külön egyik sem használja a teljes kódbázist, ha valamiért ezt el kell kerülni akkor konfigurálhatóan ki lehessen kapcsolni a nem használt részeket a kódbázisból).

Ha mindenképp egy repót akarsz, akkor is a két project master branchébe mergelném a közös kód master branch-ét, így nem kell rebaselni.