Olin vuosia sitten iloinen päästessäni eroon CVS:stä, kun Subversion kehitettiin. Sen jälkeen Subversionista onkin tullut aika universaali valinta versiohallintaan kaikissa mahdollisissa softaprojekteissa, vaikka sinä on omat puutteensa.
Työryhmäkäytössä Subversionin selkein ongelma on ollut branchien hallinnasta puuttuva automatiikka. Projektista voi kyllä tehdä uuden branchin, kun haluaa työstää jotain ominaisuutta rauhassa, mutta muutosten yhdistäminen takaisin pääprojektiin saattaa osoittautua haastavaksi. On ollut pitkälti kehittäjän omalla vastuulla osata ottaa diffit oikeiden versioiden väliltä. Pääprojektiin ilmestyneiden muutosten yhdistäminen omaan branchiin on myöskin hankalaa.
Git hoitaa branchit ja merget automaattisesti. Kehittäjä voi koska tahansa luoda projektista oman henkilökohtaisen branchin (git clone), työstää sitä kaikessa rauhassa ja committailla muutoksiaan paikallisesti. Kun muutokset sitten valmistuvat, ne on helppo yhdistää pääprojektiin yhdellä komennolla (git pull). Omaa branchiaan voi myöskin pitää jatkuvasti ajan tasalla pääprojektiin tehtyjen muutosten kanssa (git pull toiseen suuntaan), jolloin ei ajaudu liian kauas todellisuudesta.
Olen tutustunut Gitiin vasta muutaman tunnin ajan, mutta olen jo todennut pitäväni siitä. Esimerkiksi seuraavat asiat on tehty fiksusti:
Töissä ajattelin seuraavaksi tutkia, toimisiko Subversionin ja Gitin yhdistäminen siten, että projektista työstetään uusia ominaisuuksia käyttäen Gitin brancheja, jotka sitten lopuksi pullataan Subversionin puolelle ja commitataan osaksi pääprojektia. Tämä tarkoittaisi, että totuttuja toimintatapoja Subversionin suhteen ei tarvitsisi muuttaa, mutta Git-käyttäjät voisivat kuitenkin hyödyntää uusia ominaisuuksia.