Hajautettu versionhallintajärjestelmä
From Wikipedia, the free encyclopedia
Hajautettu versionhallintajärjestelmä (engl. distributed revision control system (DRCS), distributed version control system (DVCS)) on ohjelmiston versiohallintaan käytettävä järjestelmä, joka ei riipu yksittäisestä palvelimesta. Hajautetun versionhallintajärjestelmän vastakohta on keskitetty versionhallintajärjestelmä.
Ominaisuuksiin kuuluu mahdollisuus noutaa, muokata ja yhdistää lähdekoodi eri tietovarastojen (engl. repository) välillä ilman keskitettyä versioiden synkronointia. Vaihtoehtoisesti järjestelmässä voi olla useita palvelimia. Olennainen ajatus toiminnassa on että jokainen työversio (working copy) on myös itsenäinen tietovarasto. Yksittäisten tiedostojen sijaan järjestelmä seuraa muutosjoukkoja (engl. changesets), jotka voivat kattaa useamman tiedoston muutokset yhteenkuuluvana muutoksena.
Konsepti perustuu havainnolle, että laajamittaisessa kehityksessä lähdekoodista on useita rinnakkaisia versioita esimerkiksi eri alustoilla, osastoilla, ominaisuuksilla tai julkaisuversioilla.
Ensimmäinen hajautettu versionhallintajärjestelmä oli BitKeeper, joka inspiroi projekteja kuten GNU Arch, Darcs, Monotone ja Git.[1][2][3]
Linus Torvalds kertoo hajautetun järjestelmän eduksi, että politikointi käyttäjäoikeuksista poistuu: jokaisella käyttäjällä on oma tietovarasto.[4] Hajautetussa versionhallinnassa ei ole yksittäistä vikapaikkaa kuten keskitetyssä järjestelmässä: jokainen työkopio on täysi kopio tietovarastosta ja siten sen varmuuskopio.[5] Yksittäiselle käyttäjälle hajautetut työkalut ovat lähes aina nopeampia kuin keskitetyt työkalut.[6] Linux-ytimen kehitysmallissa muutokset kulkevat "portinvartijoina" toimivien alijärjestelmien ylläpitäjien kautta, jotka pitävät omaa lähdekoodipuuta ja lähettävät Torvaldsille muutoksia pääsarjan ytimeen liitettäväksi.[7]
Hajautettujen versionhallintajärjestelmien merkittävä ominaisuus on skaalautuvuus: suurissa projekteissa suorituskyky on merkittävä ominaisuus.[8] Torvalds on kutsunut toimintamallia luottamusverkoksi (engl. network of trust), joka on sama malli kuin tietoturva- ja salausohjelmistoissa.[8]
Eräät hajautetut versionhallintajärjestelmät ovat kolmannen sukupolven versionhallintajärjestelmiä.[9]