Organizace projektu – core a individuální nadstavba v gitu

Kajda23
Člen | 41
+
0
-

Ahoj,
řeším takový spíš filozofický problém a vlastně nevím, jaké jsou možnosti, kudy se vydat.
Dejme tomu, že mám nějaké core aplikace (CMS, intra, atp. – jde o moduly, modely, configy, router, atp.), které chci vytvářet jako společný základ pro více individuálních webů. Nad tímto core je pak postavena individuální aplikace (web – presentery, šablony, grafika). Core i indivuduální nadstavby bych chtěl mít samostatně verzované gitem. Vývoj ale v zásadě probíhá tak, že jádro je vyvíjeno zároveň s individuální nadstavbou v případě potřeby.

Zkoušel jsem něco jako 2 samostatné repozitáře a podstrčení core skz hardlinky do individuální aplikace, kde jsou tyto core soubory v gitu ignorovány. V zásadě je to funkční, ale občas to přináší skryté problémy (např. git při checkoutech nezachovává hardlinky), v IDE není možné přímo sledovat git změny jádra a připadá mi to jako takové nečisté řešení.

Otázka zní: jak uspořádat projekt a git tak, aby to bylo funkční a v tomto duchu spravovatelné? Má např. git pro to nějaké nativní řešení?

Díky za nakopnutí.

Kamil Valenta
Člen | 760
+
-1
-

My to děláme tak, že je v gitu samostatný repozitář pro core a samostatný pro projekt klienta. Deploy pak stáhne z gitu core a poté projekt, takže se to na webu „spojí“.

Pavel Kravčík
Člen | 1181
+
+2
-

Ahoj,

my normálně verzujeme stejně jako Nette. Tj. náš composer.json vypadá nějak takhle:

nette/form: "^3"
company/user: "^1"
company/rabbit: "^1"
company/gitlab: "^1"
company/core: "^1"

Někde nepotřebuješ rabbit, tak ho dáme pryč a funguje to bez. Máme to formou extension a funguje to perfektně pro desítky projektů a a jejich aktualizace.

Kajda23
Člen | 41
+
0
-

Díky za odpovědi. Nejsem si jistý, jestli jste mě pochopili nebo já jen nechápu Vaši odpověď. Jde mi primárně o vývoj a o to, jak zařídit, abych v rámci jednoho projektu mohl transparentně spravovat 2 git repozitáře. Sem směřuje má otázka a ptám se proto, že v gitu nejsem úplně doma: možná jsem špatně pochopil už jeho filozofii, možná existuje nativní řešení, které já jenom neznám a možná existuje nějaká úplně snadná cesta úplně jinudy.

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

No ten druhý (potažmo X-tý) repositář si tam spravuješ přes composer. Pokud myslíš něco jako commitovat z jednoho projektu do dvou separátních repositářů – není to příliš dobrý nápad, ale mělo by to jít snadno přes nastavení složek. Tj. každá složka může mít vlastní.git.

Ukázka volání vlastního repo:

"repositories":
[
  {
    "name": "company/mail",
    "type": "vcs",
    "url":  "ssh://git@xxx.cz/company/mail.git"
  },
]

Editoval Pavel Kravčík (3. 2. 2021 14:06)