Tak Forresti taky přešli na Git, paní Millerová

Ve Forrestu jsme jako verzovací systém používali po velmi dlouhou dobu prastaré CVS. Respektive v době, kdy se s tím ve firmě začínalo (pamětníků už je jen hrstka) to zase až taky zastaralý systém nebyl (mluvíme o roku 2000). Dlouhou dobu jsme zvažovali náhradu za nějaké modernější VCS, ale nikdo se toho nechtěl osobně ujmout a byla tady celá řada překážek, se kterými bychom se museli kvůli přechodu vypořádat. Kromě infrastruktury (háčky do issue trackeru, build a install skripty, zálohování atd.) jsme měli obavu i o to, jak by přechod zvládly ty desítky vývojářů, kteří CVS používají - kritické místo se nám zdál tým webmasterů starající se o drobné úpravy na existujících projektech (v řádu desítek úprav denně). Prostě jsme hledali výmluvy, protože se nám do migrace nechtělo - zvlášť, když jsme neměli uvnitř firmy nikoho, kdo by nějaké nové VCS evangelizoval.

Samozřejmě existovaly i poměrně důležité motivy, proč se do migrace pustit - kromě nešvarů, které CVS mělo od svých prvopočátků (nemožnost odstraňovat složky, nemožnost přesunovat soubory - tj. při refaktoringu docházelo ke ztrátě historie, obtížné slučování nezávislých vývojových větví atp.) jsme věděli, že i vývojářské nástroje dříve nebo později začnou od podpory CVS ustupovat a i kdyby ne, investice do tohoto VCS bude nulová. Svět už prostě CVS nezajímá poměrně dlouho a jiné už to nebude. Řada z nás tak měla pocit, že nám tady ujíždí (pokud už dávno neujel) vlak. Někteří z nás, sice přišli do styku s Gitem na nějakých OS projektech, ale to rozhodně nestačilo na to, abychom se ho dokázali pořádně naučit.

Zkrátka jsme přešlapovali na skokánku a ostýchali se skočit.

Důležitým impulsem pro nás byla spolupráce s Inmite na projektu RunCzech.cz - sdílení zdrojových kódu v CVS s externí firmou totiž znamenalo řadu komplikací, které nás donutily k zamyšlení. Když přišel náš hlavní vývojář projektu RunCzech (díky Michale) s návrhem realizovat projekt nad Gitem, chopili jsme se toho jako příležitosti prototypového nasazení. Jak už jsem tady kdysi psal, za většinou zásadních rozhodnutí ve firmě, stojí osobní odvaha jednotlivých lidí a v tomto případě to nebylo jinak.

Když jsme uvažovali o migraci VCS, měli jsme v hledáčku jen dvě možnosti - Git nebo Mercurial (věděli jsme, že chceme jít směrem DVCS). Pro Git hovořila větší penetrace na trhu, lepší podpora v nástrojích a také to, že někteří z nás už s Gitem jakés takés zkušenosti měli. V lednu tohoto roku jsme byli tedy rozhodnuti prototypově nasadit Git a teprve, kdybychom narazili na nějaké zásadnější problémy, vyzkoušet na jiném projektu Mercurial.

Po několika měsících se však ukázalo, že cesta je průchozí a přináší víc pozitiv než problémů (i když na pár zapeklitostí jsme po cestě také narazili). Tým, který realizoval projekt pro RunCzech se použitím Gitu prokousal sám, ale pro zbytek vývojářů jsme už zorganizovali školení od WebExpo Academy pod taktovkou Ladislava Prskavce. Školení bylo výborné a musím říct, že mi v některých ohledech otevřelo oči (a to jsem už Git sem tam používal) - rozhodně jsme všichni odcházeli s pocitem, že základním pochodům a principům Gitu rozumíme (a se zbytkem nám už pomůže pan Google).

Po necelém půl roce máme základní infrastrukturu pro Git připravenou, základní projekty zmigrované a všechny nové projekty už zakládáme pod Gitem. Nakonec nebyl přechod ani z poloviny tak problematický, jak jsme si mysleli že bude.

Ponaučení

Z dnešního pohledu vidím naše váhání jako velkou chybu a to především chybu nás seniorů, kteří jsme za tyto věci primárně zodpovědní. Už dlouhou dobu bylo zcela evidentní, že CVS budoucnost nemá a spíše dřív nebo později pro nás začne být limitující. Ačkoliv jsme toto dobře věděli, zdálo se nám, že cena za přechod bude příliš veliká kvůli "objektivním" překážkám a "specifickému" způsobu fungování uvnitř firmy. Byl to ale pouze přelud, za který se maskovala naše lenost a nedostatek odvahy udělat změnu.

Na druhou stranu se mi zdá, že ve chvíli, kdy jsme se rozhoupali, už byla posloupnost kroků poměrně optimální. Prototypové období trvalo cca 3 měsíce a ukázalo nám, že neexistují zásadní překážky, proč by Git neměl být nasazen všude. Navíc jsme díky tomu získali první "odborníky" uvnitř firmy, kteří byli schopni poskytnout alespoň základní podporu a rady ostatním v začátcích. Na prototypovém nasazení jsme si navíc ověřili, že Git je akceptovatelný jak Java, tak i Web developery, což je pro nás klíčové.

Před dalším rozšířením jsme přes školení dostali základní představu o fungování Gitu mezi další lidi a ujasnili řadu věcí i našim prvním "odborníkům". Od té chvíle jsme začali nasazovat Git všude a začali migrovat naše hlavní knihovny pomocí Cvs2Git (díky Frci) a snažíme se, aby většina lidí, co byli na školení měla příležitost se s Gitem setkat co nejdříve na vlastní kůži a začít ho dennodenně používat a postupy si zažít.

Že to ale trvalo ... :)