Hajautettu versionhallintajärjestelmä
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]
Toimintamallit
[muokkaa | muokkaa wikitekstiä]Hajautettu versionhallintajärjestelmä kuten Git tukee eri toimintamalleja versiohallinnassa kuten keskitetty työmalli, integraationhoitajamalli ja hyväntahtoinen diktaattorimalli, joissa muutokset etenevät yhden tai useamman tietovaraston kautta.[10] Koska Git tukee useampia tietovarastoja mahdollisia toimintamalleja on useita.[10]
Keskitetyssä mallissa kaikki kehittäjät tallentavat muutokset samaan jaettuun tietovarastoon kuten keskitetyssä versionhallintajärjestelmässä.[10]
Integraationhoitajamallissa kehittäjät hakevat yhdestä hyväksikatsotusta tietovarastosta ja työntävät muutokset omaan tietovarastoon.[10] Kehittäjä lähettää integraationhoitajalle pyynnön hakea muutokset kehittäjän tietovarastosta, yhdistää muutokset paikallisesti ja työntää hyväksikatsottuun tietovarastoon.[10]
Hyväntahtoinen diktaattorimalli lisää kerroksen luutnantteja, joilla on yksi integraationhoitaja jota kutsutaan hyväntahtoiseksi diktaattoriksi.[10] Tavalliset kehittäjät työskentelevät omassa aiheenmukaisessa haarassaan ja hakevat hyväksikatsotusta tietovarastosta: tavalliset kehittäjät perustavat muutokset hyväksikatsottuun versioon.[10] Luutnantit hakevat kehittäjien aihekohtaisesta haarasta ja yhdistävät muutokset, jotka diktaattori hakee ja yhdistää hyväksikatsottuun tietovarastoon, josta kaikki hakevat.[10] Mallia käytetään hyvin suurissa projekteissa joissa on satoja henkilöitä yhteistyössä.[10]
Hajautetut versionhallintajärjestelmät
[muokkaa | muokkaa wikitekstiä]Hajautettuja versionhallintajärjestelmiä ovat:
Katso myös
[muokkaa | muokkaa wikitekstiä]Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Linus Torvalds: Re: VCS comparison table marc.info. 19.10.2006. Viitattu 9.11.2019. (englanniksi)
- ↑ Linus Torvalds: Re: [ANNOUNCE Git wiki] marc.info. 5.5.2006. Viitattu 9.11.2019. (englanniksi)
- ↑ Zack Brown: A Git Origin Story 27.7.2018. Linux Journal. Viitattu 6.11.2019. (englanniksi)
- ↑ 10 Years of Git: An Interview with Git Creator Linus Torvalds 6.4.2015. Linux Foundation. Arkistoitu 3.11.2019. Viitattu 3.11.2019. (englanniksi)
- ↑ 1.1 Getting Started - About Version Control git-scm.com. Viitattu 3.11.2019. (englanniksi)
- ↑ Chapter 1. How did we get here? hgbook.red-bean.com. Viitattu 3.11.2019. (englanniksi)
- ↑ 2. How the development process works kernel.org. Viitattu 26.11.2019. (englanniksi)
- ↑ a b Robert Fendt: DVCS Round-Up: One System to Rule Them All?--Part 1 19.1.2009. Linux Foundation. Arkistoitu Viitattu 6.11.2019. (englanniksi)
- ↑ Eric Sink: A History of Version Control ericsink.com. Viitattu 23.2.2017. (englanniksi)
- ↑ a b c d e f g h i 5.1 Distributed Git - Distributed Workflows git-scm.com. Viitattu 10.3.2020. (englanniksi)