Hajautettu versionhallinta - Distributed version control

Vuonna ohjelmistojen kehittäminen , hajautettu versionhallinta (tunnetaan myös nimellä hajautettu Versionhallintajärjestelmissä ) on eräänlainen versionhallinta jossa koko ao , mukaan lukien sen koko historian, peilautuu jokaisen kehittäjän tietokoneessa. Verrattuna keskitettyyn versionhallintaan tämä mahdollistaa automaattisen hallinnan haarautumisen ja yhdistämisen , nopeuttaa useimpia toimintoja (paitsi työntämistä ja vetämistä), parantaa kykyä työskennellä offline -tilassa eikä luota yksittäiseen sijaintiin varmuuskopiointiin. Git , maailman suosituin versionhallintajärjestelmä, on hajautettu versionhallintajärjestelmä.

Vuonna 2010 ohjelmistokehittäjä Joel Spolsky kuvaili hajautettuja versionhallintajärjestelmiä "mahdollisesti suurimmaksi edistysaskeleeksi ohjelmistokehitystekniikassa [viimeisen] kymmenen vuoden aikana".

Hajautettu vs keskitetty

Hajautetut versionhallintajärjestelmät (DVCS) käyttävät vertaislähestymistapaa versionhallintaan, toisin kuin keskitettyjen järjestelmien asiakas-palvelin- lähestymistapa. Hajautettu versionhallinta synkronoi arkistot siirtämällä korjaustiedostoja vertaisilta. Koodikannasta ei ole yhtä keskusversiota; sen sijaan jokaisella käyttäjällä on työkopio ja koko muutoshistoria.

DVCS -järjestelmän etuja (verrattuna keskitettyihin järjestelmiin) ovat:

  • Antaa käyttäjien työskennellä tuottavasti, kun he eivät ole yhteydessä verkkoon.
  • Yleiset toiminnot (kuten sitoumukset, katseluhistoria ja muutosten palauttaminen) ovat nopeampia DVCS: lle, koska ei ole tarvetta kommunikoida keskuspalvelimen kanssa. DVCS: n avulla viestintä on välttämätöntä vain silloin, kun muutokset jaetaan muiden vertaisten kesken.
  • Sallii yksityisen työn, joten käyttäjät voivat käyttää muutoksia myös varhaisiin luonnoksiin, joita he eivät halua julkaista.
  • Työkopiot toimivat tehokkaasti etävarmuuskopioina, jolloin vältytään luottamasta yhteen fyysiseen koneeseen yksittäisenä epäonnistumispisteenä.
  • Mahdollistaa erilaisten kehitysmallien käytön, kuten kehityshaarojen tai komentaja/luutnanttimallin käytön.
  • Mahdollistaa projektin "julkaisuversion" keskitetyn hallinnan
  • Käytössä FOSS ohjelmistoprojektit se on paljon helpompi luoda projektin haarukka projektista, joka on pysähtynyt, koska johdon ristiriitoja tai suunnittelun erimielisyyksiä.

DVCS: n haittoja (verrattuna keskitettyihin järjestelmiin) ovat:

  • Arkiston ensimmäinen tarkastus on hitaampaa kuin keskitetyn versionhallintajärjestelmän kassalla, koska kaikki haarat ja versiohistoria kopioidaan oletuksena paikalliselle koneelle.
  • Lukitusmekanismien puuttuminen, joka on osa useimpia keskitettyjä VCS-järjestelmiä ja jolla on edelleen tärkeä rooli, kun on kyse ei-yhdistämistä tekevistä binaaritiedostoista, kuten graafisista resursseista tai liian monimutkaisista yhden tiedoston binaari- tai XML-paketeista (esim. Toimistoasiakirjat, PowerBI-tiedostot, SQL Server) Data Tools BI -paketit jne.).
  • Lisätilaa tarvitaan, jotta jokainen käyttäjä voi saada täydellisen kopion koko koodikannan historiasta.
  • Koodiperustan lisääntynyt näkyvyys, koska jokaisella osallistujalla on paikallisesti haavoittuva kopio.

Jotkut alun perin keskitetyt järjestelmät tarjoavat nyt joitain hajautettuja ominaisuuksia. Esimerkiksi Subversion pystyy suorittamaan monia toimintoja ilman verkkoa. Team Foundation Server ja Visual Studio Team Services isännöivät nyt keskitettyjä ja hajautettuja versionhallintavarastoja Gitin isännöinnin kautta.

Joissakin hajautetuissa järjestelmissä on nyt myös ominaisuuksia, jotka lieventävät kassalle siirtymisaikoja ja tallennuskustannuksia, kuten Microsoftin kehittämä Virtual File System for Git toimimaan erittäin suurten koodikantojen kanssa, mikä paljastaa virtuaalisen tiedostojärjestelmän, joka lataa tiedostot vain paikalliseen tallennustilaan kuin niitä tarvitaan.

Työmalli

Hajautettu malli sopii yleensä paremmin suuriin projekteihin, joissa on osittain riippumattomia kehittäjiä, kuten Linux -ydinprojekti, koska kehittäjät voivat työskennellä itsenäisesti ja lähettää muutokset yhdistettäväksi (tai hylättäväksi). Hajautettu malli mahdollistaa joustavasti mukautetun lähdekoodin työnkulun käyttöönoton. Integraattori työnkulku on yleisimmin käytetty. Keskitetyssä mallissa kehittäjien on sarjoitettava työnsä, jotta vältetään eri versioiden ongelmat.

Keskus- ja haarahakemistot

Jokaisella projektilla on keskusvarasto, jota pidetään virallisena arkistona, jota projektin ylläpitäjät hallinnoivat. Kehittäjät kloonaavat tämän arkiston luodakseen identtiset paikalliset kopiot koodikannasta. Lähdekoodin muutokset keskusvarastossa synkronoidaan ajoittain paikallisen arkiston kanssa.

Kehittäjä luo uuden haaran paikalliseen arkistoonsa ja muokkaa kyseisen haaran lähdekoodia. Kun kehitys on tehty, muutos on integroitava keskusvarastoon.

Vedä pyynnöt

Osallistuminen hajautettua versionhallintajärjestelmää käyttävään lähdekoodivarastoon tehdään yleensä vetopyynnön , joka tunnetaan myös yhdistämispyyntönä, avulla . Avustaja pyytää projektin ylläpitäjää vetämään lähdekoodin muutoksen, josta nimi "pull request". Ylläpitäjän on yhdistettävä vetopyyntö, jos osuudesta tulee osa lähdekantaa.

Kehittäjä luo vetopyynnön ilmoittaakseen ylläpitäjille uudesta muutoksesta. kuhunkin vetopyyntöön liittyy kommenttiketju. Tämä mahdollistaa tarkan keskustelun koodimuutoksista . Lähetetyt vetopyynnöt näkyvät kaikille, joilla on arkiston käyttöoikeus. Ylläpitäjät voivat hyväksyä tai hylätä vetopyynnön.

Kun vetopyyntö on tarkistettu ja hyväksytty, se yhdistetään arkistoon. Vahvistetusta työnkulusta riippuen koodi on ehkä testattava ennen sen sisällyttämistä viralliseen julkaisuun. Siksi joissakin projekteissa on erityinen haara testaamattomien vetopyyntöjen yhdistämiseksi. Muut projektit suorittavat automaattisen testisarjan jokaisella vetopyynnöllä käyttäen jatkuvaa integrointityökalua , kuten Travis CI , ja tarkistaja tarkistaa, että uudella koodilla on asianmukainen testikatto.

Historia

Ensimmäiset avoimen lähdekoodin DVCS-järjestelmät olivat Arch , Monotone ja Darcs . Kuitenkin avoimen lähdekoodin DVCS: t eivät olleet koskaan kovin suosittuja ennen Gitin ja Mercurialin julkaisua .

BitKeeperiä käytettiin Linux -ytimen kehittämisessä vuosina 2002–2005. Gitin , nykyään maailman suosituimman versionhallintajärjestelmän, kehittäminen sai alkunsa BitKeeperin tekemän yrityksen päätöksestä peruuttaa Linus Torvaldsin ja joidenkin muut Linux -ytimen kehittäjät olivat aiemmin hyödyntäneet sitä.

Katso myös

Viitteet

Ulkoiset linkit