<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"><channel>
<title>Subversion</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/</link>
<description>Recent changes in Subversion</description>
<item><title>Subversion</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/Subversion</link>
<guid>http://sange.fi/~atehwa/cgi-bin/piki.cgi/#1119876116</guid>
<description>&lt;p&gt;&lt;ins&gt;http://subversion.tigris.org/&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Subversion on varsin hyvin tehty versionhallintaohjelma. (On 
varmaankin syytä mainita, että katseltuani [GNU arch]ia totesin sen 
olevan joka suhteessa parempi, joten aion jättää käyttämättä 
subversionia.)&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Kaikki eivät tiedä, mitä versionhallinta tarkoittaa. Jopa 
monelle kokeneelle tietokoneenkäyttäjälle versionhallinta on tuntematon 
käsite. Lyhyesti sanottuna versionhallintatyökalut auttavat 
säilyttämään tuotoksista koko niiden kehityshistorian, pitämään yllä 
useampia yhtaikaisia versiolinjoja, vertailemaan eri versioita 
keskenään, siirtämään muutoksia versioiden välillä ja säilyttämään 
metatietoa (kuten että kuka on muuttanut mitäkin kohtaa) muutoksista. 
Lisäksi jotkin versiohallintaohjelmat auttavat ihmisten yhteistyötä, ja 
helpottavat myös yhden ihmisen vaivaa työstää samaa projektia 
useammasta paikasta.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Versionhallintaohjelmilla on ratkaistavanaan kaksi 
perustavanlaatuista ongelmaa, ensinnäkin se, miten säilytetään 
projektin kehityshistoria tilatehokkaasti ja käyttökelpoisesti, ja 
toisekseen (ja tärkeämpänä), miten estetään ihmisiä tuhoamasta 
vahingossa toistensa muutoksia. Esimerkiksi yrityksissä, joissa 
käytetään vain jaettuja tiedostojärjestelmiä dokumenttien / ohjelmien 
yhteistyöstöön, joudutaan usein delegoimaan tiedostojen "pääomistuksia" 
tietyille henkilöille, jottei tiedostoa vahingossa muokkaisi kaksi 
ihmistä yhtaikaa.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Tämän jälkemmäisen ongelman ratkaisuun on kaksi mallia: 
rajoittava, mutta yksinkertainen lukitusmalli ja salliva, mutta 
monimutkaisempi yhdistelymalli. Lukitusmalli ei itse asiassa eroa 
olennaisesti jaetun tiedostojärjestelmän tapauksesta ja useimmat 
kaupalliset versionhallintajärjestelmät soveltavat sitä - ehkä siksi, 
että se on helppo toteuttaa? Yhdistelymalli tukee tosissaan hajautettua 
yhteistyöstöä ja osoittaa jännittävällä tavalla, miten historian 
säilyttäminen on tärkeää dokumenttien yhteistyöstölle.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Ongelmatilanne on siis tämä: # käyttäjä 1 alkaa muokata 
tiedoston versiota A ja tuottaa siitä uuden version, version B. # sillä 
aikaa käyttäjä 2 alkaa myös muokata versiota A ja tuottaa siitä version 
C. # käyttäjä 1 tallettaa version B. # käyttäjä 2 tallettaa version C 
ja tuhoaa B:ssä olleet muutokset. Au!&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Lukitusmalli ratkaisee sen näin: # käyttäjä 1 aikoo muokata 
versiota A. Hän lukittaa tiedoston itselleen. # käyttäjä 2 haluaa myös 
muokata tiedostoa. Hän yrittää lukittaa tiedoston itselleen, mutta saa 
virheilmoituksen, sillä käyttäjä 1 on jo lukittanut tiedoston. # 
käyttäjä 1 tekee versionsa B ja tallettaa sen. Tällä aikaa käyttäjä 2 
istuu käsiensä päällä ja syljeskelee kattoon. Tallennettuaan käyttäjä 1 
vapauttaa lukon. # nyt käyttäjä 2 voi lukittaa tiedoston itselleen ja 
alkaa muokata versiosta B versiota C.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Yhdistelymallissa taas homma menee näin: # käyttäjä 1 muokkaa 
versiosta A version B. # käyttäjä 2 muokkaa samaan aikaan versiosta A 
version C. # käyttäjä 1 tallettaa version B. # käyttäjä 2 yrittää 
tallettaa version C, mutta saa ilmoituksen, että tiedosto on muuttunut 
tällä välillä ja muutokset on yhdisteltävä. # niinpä hän hakee A:n ja 
B:n väliset muutokset. Ne yhdistetään C:in, jolloin syntyy uusi versio 
D, joka sisältää sekä B:hen että C:hen tehdyt muutokset. # käyttäjä 2 
tallettaa version D.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Yhdistelymalli edellyttää, että versionhallintajärjestelmä 
pystyy aina hakemaan mielivaltaisen vanhoja muutoslitanioita yhdistelyä 
varten. Siinä jokaisella käyttäjällä on, määritelmän mukaan, oma 
paikka, jossa hän tekee muutoksia rauhassa muilta käyttäjiltä. Niinpä 
esimerkiksi subversionissa jokainen käyttäjä hakee 
versionhallintajärjestelmästä itselleen oman leikkialueen, 
työstöhakemiston. Eri työstöhakemistot sisältävät eri versioita 
tiedostoista sen mukaan, milloin ne on viimeksi päivitetty.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Tämä saattaa kuulostaa turhalta vaivalta, mutta kun 
versionhallintaa on käyttänyt jonkin aikaa, ei halua tehdä enää 
yhtäkään suurempaa työtä vailla versionhallinnan tuomaa turvaa ja apua. 
Se tuntuisi merkitsevän tarpeetonta riskinottoa, että mokaa jotain ja 
menettää tiedon, jonka olisi halunnut säilyttää, tai että kämmää jotain 
siirrellessään projekteja ympäriinsä työstäessään jotain useammassa eri 
paikassa...&lt;/ins&gt;

</description>
<pubDate>Mon, 27 Jun 2005 12:41:56 +0000</pubDate>
</item>

</channel></rss>
