Blog from February, 2014

Próbálok haladni a korral és egy új projektet megpróbálok Git alapokon verzió kezelni, merthogy majd lesz benne sok refaktorálás, létre is hoztam szépen a Git repository-t, tettem fölé HTTP protokollt, éppen kötném be a Jenkins alá, amikor rájöttem arra a nem túl reklámozott korlátozásra, hogy egy repository az nagyjából egyben kezelendő fordítási egység vagy projekt. Nekem például most egy olyan projektem van, ahol lazán csatolva öt különálló modulom van:

  • Common libraries
  • Common data model
  • Android
  • Back end
  • Front end

Ha ezeket külön szeretném verziózni build és release szempontjából, akkor – jelenlegi tudományom szerint – ez öt Git repository létrehozását jelenti, mert nem szeretném egyetlen esernyő alá bezsúfolni a négy projektet, amikor csak puszta adatok mozognak közöttük REST vagy SOAP protokollon, ennél több függés ugyanis nincs a projektek között, leszámítva a Java alapú projektekben közösen használt eszközöket. Tehát például a Back end projekt teljesen önállóan kerül (majd) kiadásra, a külvilág felé REST protokollon JSON alapú interfészen fognak adatok mozogni, értelmetlennek tartom ezen projekt mellé odacsomagolni az Android projektet, amely ugyan használja az interfészen át a szolgáltatásokat, de teljesen más okokból fogok release-t kiadni.

Ha viszont engedek az "each project in its own repo" filozófiának, akkor elvesztem a Git azon előnyét, hogy a fájlok és egész fák mozgását jobban képes követni, mint a Subversion, hiszen a nagyfokú refaktorálás során minden bizonnyal egész fájlok és/vagy metódusok fognak mozogni a projektek között (kód duplikáció elkerülése okán sok dolog át fog kerülni a Common libraries projektbe, illetve projektek közötti mozgás is elképzelhető). Ebből a mozgásból a Git nem sokat fog látni, mert egyik független repository-ból kiveszem és beleteszem a másik független repository-ba.

Én most egy kicsit megakadtam... segítsetek kicsit: valamit rosszul gondolok vagy ilyen feladatokra nem való a Git?

...nagy lépés nekem – az országból...

...mert ezt magyarországi Developer Console regisztrációval nem lehet megoldani. (smile)