( sz | 2011. 12. 20., k – 21:05 )

Nem az emberek számától függ, hanem attól, hogy mit értesz verziókezelés alatt.

Vannak, akik csak azt értik alatta, hogy legyen egy hely, ahova egyszerűen belehányhatják a kódjukat, illetve ahonnan lehúzhatjuk a szomszéd irodában ülő kolléga kódját. Hogy az egymástól független feature-öket implementáló commitok össze-vissza vannak egymás után? Sebaj. Hogy egy commitba több, egymástól független változtatás is bekerül? Szóra sem érdemes. És hogy ehhez csak annyi kerül a commit message-be, hogy "bugfix"? Ugyan. Esetleg nap végén mindent commitolni kell, hogy "el ne vesszen"? Nem számít, ha kész sincs, esetleg még csak le se fordul? Smafu. Nos, ők nyugodtan használhatják továbbra is megelégedéssel a Subversiont (CVS-t, ClearCase-t, stb-t), felesleges még csak elgondolkodni is a bármi másra váltáson.

Ezzel szemben vannak, akik már rájöttek arra, hogy előnyös, ha egy commitba csak logikailag összetartozó változások kerülnek, mert az ilyenekből felépülő tiszta és áttekinthető history a későbbiekben nagymértékben segíti a kód megértését, ellenőrzését, bugok fixálását, stb. Kis logikai egységekből álló commitok létrehozásához viszont kell, hogy a verziókezelő aktívan segítse a usert, hogy támogasson olyan műveleteket, amik egyszerűen lehetővé teszik egy file-ban lévő módosítások csak egy részének commitolását, commitok egybeolvasztását illetve felosztását, commitok sorrendjének átrendezését, a log message megváltoztatását, stbstb. Aztán ha ezeket kiegészítik olyan eszközök, amikkel könnyen lehet a historyban bányászni, pl. greppelni log message-ben és/vagy a changesetben előforduló szavakra, blame/annotate esetén ignorálni az indentálás változásait vagy követni a kód mozgatását, valamint automatizáltan megkeresni az első commitot, amiben lévő változás miatt egy bugreportból származó teszt megbukik... és mindezt gyorsan teszik, akkor lassan eljutunk odáig, hogy manapság mit jelent a verziókezelés.

Ez az a pont, ahol az úgynevezett verziókezelő rendszerek többsége csúfosan elvérezik, és a git állva marad, meg talán a Mercurial, féllábon.

Még éveknek kell eltelniük addig, hogy az emberek rájöjjenek: a Subversion nem alkalmas verziókezelésre ;)