Milyen verziókezelőt és hogyan?

 ( nehai | 2015. január 15., csütörtök - 6:05 )

A problémám a következő:

Adott több project (most 3, de növekszik). A kód 90%-a mindegyiknél azonos. Hogyan lehet azt megcsinálni ha egyikben dolgozok és a közös kódrészben történik változás akkor az mindegyikben megjelenjen.

Valahogy úgy képzelném el, hogy van A, B, C repo amiben csak az eltérő file-ok vannak és valamiféle háttér repóból be-include-olja a közös részt. Lehet ilyet csinálni?

Eddig svn-ben dolgozgattam, de bármire váltok, ha szükséges.

Szerkesztve:
A kód közös része teljesen, az egyedi részei pedig nagyrészt PHP filek, kisrészt mindenféle script, és néhány binary data file.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Csinálhatsz egy al-projektet, aminek a 'kimenete' egy olyan library/dll/sharedlib/include_elem/etc (nem írtál semmit a platformról), amit minden főprojekt felhasznál.

Ahogy mar irtak, megoszthatod a "lebuildelt" artifactot. Masik lehetoseg git es submodules.

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám

Ez alapvetően nem verziókezeléssel oldható meg, hanem build módszer és projekt struktúra kérdése.

Ami közös kód, azt szervezd egy külön projektbe (utils, commons, stb), külön fordítsd le és binárisan hivatkozz rá. Ha Maven (vagy Gradle) a build rendszer, akkor ez adja magát, de Ant esetén is megoldható...

...hm... PHP... szerintem ott is megoldható, hogy egy build folyamat végén egy merge van. :)
--
http://wiki.javaforum.hu/display/~auth.gabor/Home

A 'git' támogatja a submodule-okat, tehát repon belül lehet másik (akár több) repo.
http://git-scm.com/book/en/v2/Git-Tools-Submodules

Még clone-ozni is le-lehet így all-in-one, a --recursive opcióval, pl.: git clone --recursive git@host:your-repo

Az svn meg tud externals-okat, bár ehhez úgy kell szervezni a kódot, azaz a közös részek külön könyvtárban/modulban/libben legyenek.

Persze lehet hogy ennek is van hátulütője, én csak bash scriptek/libek kordában tartásához használom az svn-t.