We zijn op het werk op zoek naar een alternatief voor CVS. Nu zijn we bezig met evalueren van enkele VCS'en zoals SVN, Git, Mercurial, Perforce en ClearCase (wat binnen het bedrijf de default is).
We zitten echter met 1 belangrijke use-case die gesupporteerd moet blijven, maar die binnen andere VCS'en misschien niet kan:
Het product bestaat uit meerdere deelprojecten (~executables) die apart uitgecheckt kunnen worden.
Binnen zo'n deelproject wordt ook geregeld dezelfde code gebruikt (framework code bvb) en die wordt dan ook telkens uitgecheckt binnen dat project. bvb:
Dit doen we door middel van scripts en files die beschrijven hoe en wat moet uitgecheckt worden. Bovendien is het zo dat framework modules tags dragen en altijd op de trunk verblijven terwijl software modules gebrancht worden per release.
Nu blijkt SVN bijvoorbeeld externals te hebben, maar bij een test vonden we dat als beperking hebben dat framework modificaties bij een commit niet automatisch meegenomen worden, wat toch een belangrijke beperking is.
Ook andere VCS'en hebben dergelijke features (zie Wikipedia: Comparison of revision control software), maar we kunnen ons misschien wel wat tijd besparen door even beroep te doen op ervaringen van anderen.
Daarnaast hebben we natuurlijk nog enkele andere wensen zoals atomic commits, behoud van CVS history bij overgang, enz... maar bovenstaande use-case (of een degelijk alternatief met redelijke backwards compatibility) is toch redelijk kritisch.
Welk "modern" versiebeheer systeem (behalve CVS natuurlijk) supporteert zo'n use-cases op een vlotte manier, of hoe kunnen we dergelijke functionaliteit bereiken met een ander VCS?
We zitten echter met 1 belangrijke use-case die gesupporteerd moet blijven, maar die binnen andere VCS'en misschien niet kan:
Het product bestaat uit meerdere deelprojecten (~executables) die apart uitgecheckt kunnen worden.
Binnen zo'n deelproject wordt ook geregeld dezelfde code gebruikt (framework code bvb) en die wordt dan ook telkens uitgecheckt binnen dat project. bvb:
Local | CVS |
ProjectX/Framework/ModuleX | Framework/ModuleX |
ProjectX/Framework/ModuleY | Framework/ModuleY |
ProjectX/Software/ModuleZ | ProjectX/Software/ModuleZ |
Dit doen we door middel van scripts en files die beschrijven hoe en wat moet uitgecheckt worden. Bovendien is het zo dat framework modules tags dragen en altijd op de trunk verblijven terwijl software modules gebrancht worden per release.
Nu blijkt SVN bijvoorbeeld externals te hebben, maar bij een test vonden we dat als beperking hebben dat framework modificaties bij een commit niet automatisch meegenomen worden, wat toch een belangrijke beperking is.
Ook andere VCS'en hebben dergelijke features (zie Wikipedia: Comparison of revision control software), maar we kunnen ons misschien wel wat tijd besparen door even beroep te doen op ervaringen van anderen.
Daarnaast hebben we natuurlijk nog enkele andere wensen zoals atomic commits, behoud van CVS history bij overgang, enz... maar bovenstaande use-case (of een degelijk alternatief met redelijke backwards compatibility) is toch redelijk kritisch.
Welk "modern" versiebeheer systeem (behalve CVS natuurlijk) supporteert zo'n use-cases op een vlotte manier, of hoe kunnen we dergelijke functionaliteit bereiken met een ander VCS?
ASSUME makes an ASS out of U and ME