Monticello versionhallinta Squeakissa

Squeakissa on monta tapaa jaella ohjelmia. Yksi on muutosryppäät, change sets, joka löytyy myös muista Smalltalk-toteutuksista, mutta saattaa vaikuttaa turhan monimutkaiselta. Toinen tapa on tallentaa Squeakin image-tiedosto uudella nimellä, mutta kookkaat image-tiedostot täyttävät tallennustilan turhan nopeasti.

Kenties hieman tutumman oloinen on lähdekoodin versioiden hallintaan tarkoitettu Monticello. Sekin on CVS:ään ja Subversioniin tottuneille hieman outo kenties, mutta darcsistit saattavat tuntea olonsa kotoisaksi.

Uuden paketin luonti Monticellolla

Monticello löytyy World-menun Open-alimenusta. Tällöin aukeaa seuraavan kuvan mukainen ikkuna kyseiseen ohjelmaan:
Ensimmäinen näkymä Monticellosta.

Monticellon vasemmassa laidassa on listattuna sen hallinnoimat paketit. Oikeasta laidasta löytyy valitun paketin varastot (repositories), eli eri versioiden tallennuspaikat. Kuten kuvasta voi tulkita, näitä voi olla useita, ja ne voivat sisältää eri versioita ohjelmasta.

Monticellon saa hallinnoimaan uuden koodin muutoksia seuraavasti. Luodaan ensin uusi kategoria ohjelma- tai pakettiselaimella:
Uuden kategorian teko.

Tämän jälkeen luodaan samalla nimellä uusi paketti Monticelloon:
Paketin teko Monticelloon.
Jos Squeakissa olisi useita kategorioita, joiden nimen ensimmäinen osa olisi sama kuin annettu paketin nimi 'Kissa', tulisivat kaikki nämä kategoriat mukaan pakettiin. Esimerkiksi kategoria 'Kissa-Test' tulisi näin mukaan Monticellon pakettiin 'Kissa'. Tämän syyn ymmärtää kokeilemalla Package Browser -työkalua.

Seuraavaksi paketille pitää antaa jokin tallennuspaikka. Tämä tehdään painamalla "+Repository"-nappia, kun paketti on valittuna. Avautuvasta listasta voi valita varastoksi vaikka sähköpostin lähetyksen tai HTTP-URIn, mutta valitsemme hakemiston, hakemiston alihakemistoineen. Nyt avautuu tiedostoselain, josta oikea hakemisto haetaan (tai siitä oikeanpuoleisen listan rullauspalkin yllä olevasta valikkonapista voidaan myös luoda uusi hakemisto, mutta silloin pitää muistaa päivittää lista kokoonkasaamalla hakemiston sisältävä ylähakemisto ja jälleen aukilevittämällä sen).
Tiedostoselain
Nyt Monticello-ikkunan oikeanpuoleisessa listassa näkyy uusi varasto:
Uusi varasto Monticellossa

"Changes"-napilla saadaan edelliseen versioon tehdyt muutokset näkyville. Kuvassa näkyvät muutokset (ylin näkymä, alhaalta ylös) ovat: Kissa-paketin luominen, Katti-luokan luominen, #ääntele-metodin luominen.
Muutokset edelliseen versioon

"Save"-napilla saadaan muutokset tallennettua. Napin painaminen tuo esille dialogin, johon kirjoitetaan kuvaus siitä, mitä muutoksia lähdekieliseen ohjelmaan on tehty.
Version kommentinkirjoitusdialogi
Hyväksynnän (accept) jälkeen Monticello tallentaa muutokset ja tuo tallennetun version tiedot esille:
Ensimmäisen version tiedot
Jos Squeak ei ole aiemmin kysellyt nimikirjaimiasi, tekee se sen tässä vaiheessa. Tällöin kannattaa antaa vaikka oma käyttäjätunnus tai vastaava lyhenne nimestä, jottei vahingossa tulisi päällekkäisyyksiä.

Vaan eihän Katti sano miau! Tehdään muutos #ääntele-metodiin, ja katsotaan, mitä Changes-napin painallus meille kertoo:
Muutokset ensimmäiseen versioon
Sitten tallennetaan:
Toisen version tallennus
Ja saamme uuden tallennetun version tiedot esille:
13

Paketin lataaminen Monticellolla

Olemassa olevan paketin lataaminen Monticelloon onnistuu seuraavasti. Kun uuden Monticellon avaa, näkyvät oikeanpuoleisessa listassa kaikki varastot. Jos ei näy, "+Repository" auttaa, tai sitten luo haluamasi niminen paketti uudella varastolla.

Kun olet oikeaan varastoon navigoinut, paina "Open"-nappia, ja varaston sisältö tulee esille:
Varaston sisältö
Repository-ikkunan vasemmassa yläalueessa näkyy varastossa olevat paketit, oikeassa yläalueessa valitun paketin versiot, ja ala-alueessa valitun version tiedot. Valitse haluamasi versio ja paina "Load"-nappia, ja versio latautuu Squeakkiisi. "Merge"-napilla voit ladata vain osan versiosta.

Kun sitten lataus on suoritettu, voi kehitys jatkua:
Kehitys jatkuu
Huomaa, että version "Kissa-ji.2" lataamalla myös versiossa "Kissa-ji.1" määritelty attribuutti "nimi", luokasta "Katti" puhumattakaan, tuli mukana, eli Monticello osasi ladata myös version edeltäjät.

Lopuksi

Kokeilkaa ja tutkikaa! Pahinta mitä voi käydä on, että turmelette Squeakin imagen. Se ei ole paha asia, sillä sen saa aina kopioitua uusiksi alkuperäisestä imagesta, jos alkuperäinen vain on tallessa :)

Kaikkia Monticellon ominaisuuksia ei tässä käyty tietenkään läpi. Lisää oppia löytyy googlella, ja tietysti lukemalla Monticellon lähdekoodia, tai sen kommentteja. Lähdekoodi tulee Squeakissa tietysti mukana.

Pitäkeehän hauskaa!