Johdatus versionhallintajärjestelmiin

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
Aavesoturi
Active Member
Posts: 163
Joined: Fri Aug 31, 2007 7:07 pm
Location: Helsinki
Contact:

Johdatus versionhallintajärjestelmiin

Post by Aavesoturi »

Johdatus versionhallintajärjestelmiin

Versionhallinta pitää kirjaa ja tallentaa ohjelmiston eri versiot (tai vaikka dokumenttien, niin kuin Wikipedia), osaa palata vanhoihin versioihin ja lisäksi yhdistellä eri versioita. Yksittäiselle kehittäjälle se tarjoaa helpon tavan kokeilla villejä ideoita - jos homma ei toimi voidaan palata vanhempaan, toimivaan versioon. Vielä kehittyneenpää on "oksat", eli lähdekoodin kehitys voidaan haarauttaa esim. stabiiliin ja experimentaaliseen haaraan - molempien kehitys voi kulkea omia polkujaan ja jos kokeellinen haara osoittautuu hyväksi, se voidaan vaivattomasti yhdistää päähaaraan sinne tehtyjen muutosten säilyessä.

Useamman hengen kehitystiimille versionhalllinta on lähes välttämätöntä tai ainakin se helpottaa hommaa suuresti. Jokainen voi koodailla itsekseen ja kun muutokset lähetetään versionhallintaan, muut voivat yhdistää ne itselleen, ilman että omat muutokset koodiin häviävät. Ainoastaan jos on esim. muokkailtu samoja koodirivejä, syntyy konflikteja, jotka joutuu ratkaisemaan käsin, mutta muuten versionhallinta tekee yhdistelyn automaattisesti.

Versionhallintasysteemit perustuvat yleensä commit:eihin, eli pieniin muutoksiin, joille annetaan lyhyt kuvaus. Ideana on, että aina kun on tehty joku muutoskokonaisuus, se lähetetään versionhallintaan. Muutoksien koot voivat vaihdella korjatusta typosta kokonaisiin uusiin funktioihin, mutta yleensä ohjenuorana on, että jos ei pysty kuvaamaan tehtyjä muutoksia yhdellä lauseella, on se liian iso. Pitämällä muutokset pienehköinä, on patchit helppo yhdistää muille ja mahdollisten uusien bugien löytäminen on helppoa. Lisäksi motivaatiokin kasvaa, kun konkreettisesti näkee, että on tullut jotain tehtyä.

Järkevästi toteutettu systeemi ei tallenna joka kerta täysiä tiedostoja, vaan pelkästään muutokset, jotka se vielä pakkaa. Tällöin laajankin projektin pitkä historia vie vain vähän tallennustilaa.

Soolo käytössä versionhallinta ei vaadi nettipalvelinta, vaan tiedostovaraston (repositorio) voi muodostaa omalle kiintolevylle. Jos komentorivi pelottaa, systeemeille on saativalla erilaisia graafisia käyttöliittymiä, joista monet osaavat integroitua Windowsin tiedostoselaimeen. Tällöin muutoksien tallennus käy yksinkertaisesti kakkospainikkeen kontekstimenusta.

Seuraavassa muutaman versionhallintasysteemin lyhyet esittelyt. Muitakin on olemassa, Google ja Wikipedia auttaa.

CVS (Concurrent Versions System)
CVS on vanha, mutta tunnettu ja paljon käytetty vapaa versionhallintasysteemi. Siinä on kuitenkin rajoitteita, jotka saavat nykyään monet valitsemaan jonkun toisen systeemin.

SVN (Subversion)
SVN kehitettiin CVS:n moderniksi seuraajaksi ja se on tällä hetkellä hyvin suosittu. Se on kohtuullisen yhteensopiva CVS:n kanssa. Kuten CVS, SVN:kin käyttää asiakas-palvelin mallia, eli kaikki käyttäjät käyttävät yhtä, jaettua varastoa.

Git
Gitistä en ollut kuullutkaan vähän aikaa sitten, mutta kun törmäsin siihen yhä useammassa projektissa (esim. VLC media player, Wine, GNOME ja Googlen Android), päätin ottaa asioista selvän ja kävi ilmi, että se koodattiin muutama vuosi sitten Linux ytimen kehitykseen Linus Torvaldsin toimesta. Gitissä olennaista on nopeus ja se, että se tukee hajautettua kehitystä, eli kaikki voivat koodailla omalla varastolla ja keskusserveriä tarvitaan lähinnä muutoksista tiedottamiseen. Windows ei ole Gitin ominta aluetta, mutta se toimii kyllä: http://code.google.com/p/msysgit/ ja http://kylecordes.com/2008/04/30/git-windows-go/ )

Oma weapon-of-choiceni on Git, jota käytän nykyään kaikissa uusissa projekteissani ja vanhoissakin. Julkiseen hostaukseen käytän GitHubia (omat reponi: http://github.com/tapio ).

SourceForge.net, suurin avoimen lähdekoodin projektien hostaus palvelu tarjoaa projekteille kaikkia kolmea systeemiä (+esittelemätöntä Mercurialia).

Siinäpä pieni intro versionhallintaan. Pienehköissä, yhden henkilön projekteissa se ei ole välttämätöntä, vaikkakin ihan kätevää. Kuitenkin jos tiimillä meinaa koodia vääntää, kannattaa ehdottomasti laittaa kunnon systeemi pystyyn, sillä jokin koodien vaihtelu ircissä tai foorumilla on tuskasen köykästä. Jos joskus meinaa ohjelmoida työkseen monen kehittäjän firmassa, tulee versionhallinta vastaan ennemmin tai myöhemmin.
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Johdatus versionhallintajärjestelmiin

Post by Jare »

Hyvää tietoa. Itsekin olen pintapuolisesti asiaan tutustunut joskus aikaa sitten, ja nyt oli hyvä kerrata asiaa täältä. Kiitoksia! Toivotaan, että versionhallinta saisi lisää suosiota täällä CB-yhteisössä. 8-)
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Johdatus versionhallintajärjestelmiin

Post by CCE »

Pätevä opas, pitäisi varmaan tuohon Gittiin tutustua. Ja komea nebula-opas tuolla sivusi artikkeliosastolla :)
Someday coder
Active Member
Posts: 106
Joined: Wed Jul 30, 2008 5:04 pm

Re: Johdatus versionhallintajärjestelmiin

Post by Someday coder »

Omalla kohdalla riittänyt ihan hyvin että kun lähtee päivittelemään projektia jostain kohti niin tekee vain varmuus kopion ja se siitä.
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Johdatus versionhallintajärjestelmiin

Post by Ruuttu »

Juu, se toimii yhden miehen projekteissa ihan hyvin, mutta ei, jos menet vaikkapa jollekin isolle softayritykselle töihin työstämään muiden koodia ja tekemään koodia muiden työstettäväksi.
Post Reply