Versionhallinta tarkoittaa menetelmiä, joilla tiedostoista (tai muista tietovarastoista) pidetään muistissa, millaisia ne ovat olleet missäkin vaiheessa, kuka niitä on muuttanut, milloin ja miten (sekä usein vapaamuotoisia kuvauksia siitä, miksi). Toisin päin versionhallinta kertoo tiedostoista (tai muista tietovarastoista), miten ne ovat muodostuneet, mikä niissä on kenenkin tekemää ja mitä muutoksia ne sisältävät.
Versionhallinta on minulle yksi perustavimmanlaatuisia työkaluja, ehkä heti tekstieditorien (raakateksti) jälkeen. En tee käytännössä mitään työtä ilman, että tallennan sen muutokset versionhallintatyökaluilla. Ensimmäinen hyöty on ilmeinen: pystyn perumaan muutoksiani. (Tätä tarvitsee harvoin, mutta silloin kun tarvitsee, se on erittäin tärkeää.) Toinen hyöty on vähemmän ilmeinen: versionhallinta tekee helpoksi pitää autoritatiivista versiosäilöä jollain netitse tavoitettavissa olevalla palvelimella, jolloin saan kaikki työni paikkaan, jossa niistä (ja niiden kaikista versioista) tallettuu varmuuskopiot.
Kolmas hyöty (ja eniten käyttämäni) on mielenkiintoisin: versionhallinta sallii minun tehdä muutoksia tiedostoihini eri paikoissa, oli netti käytössä tai ei, ja yhdistellä muutokset myöhemmin. Käytännössä tämä tarkoittaa, että minulla on samoista tiedostoista kopioita monessa paikassa, mutta minun ei tarvitse itse pitää kirjaa siitä, mikä näistä kopioista on "se ajantasainen" ja itse asiassa eri kopiot voivat hyvinkin olla ajantasaisia eri asioiden suhteen; versionhallinta osaa kuljettaa muutokset näiden välillä siten, että loppujen lopuksi kaikki muutokset ovat kaikissa kopioissa.
Versionhallinta on monimutkainen aihe ja minulle erityiskiinnostuksen aihe. Siinä on monia alueita, joista monet versionhallintaa aktiivisesti käyttävätkään eivät näytä tietävän kovin paljon.
Kyllä [versionhallinta] on hyödyllistä! Kaverini kysyi, miltä vuodelta on viina, jonka yritin hänelle lahjoittaa. En muistanut, mutta muistin, kuka sen lahjoitti; se oli kansainvälinen vieras, joka majoittuessaan mun luona toi sen lahjaksi. Joten katsoin, milloin olin lisännyt kyseisen henkilön yhteystiedot tietokantaan. Tämä tieto löytyi muutoslokista, jonka [tekstimuotoinen yhteystietokanta] saa. (...)
(nettipäiväkirja 11.01.2016) Äärimmäisen mielenkiintoista! Vaikuttaa siltä, että OT:n (https://en.wikipedia.org/wiki/Operational_transformation) ja CRDT:n (https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type) suhdetta ei täysin ymmärretä. Jossain yleisemmässä mielessä nämä vastaavat [versionhallinta]tapojen kahta päähaaraa: sitä, jossa yhdistely ([merge, revision control]) tehdään kommutoimalla muutoksia, ja sitä, jossa tietorakenteiden oikea tila päätellään vanhojen tilojen DAG:sta. (...)
(nettipäiväkirja 12.06.2014) Keksin, että voisin dokumentoida, minkälainen hakemistohierarkia minulla on. Hyvien käytäntöjen levittäminenhän on hyvä käytäntö, ja minun mielestäni minun hakemistohierarkiani on hyvä käytäntö. (...)
(nettipäiväkirja 06.12.2015) Nyt on puhuttu jo aika pitkään siitä, miten sähköistyminen aiheuttaa samanlaisen tuottavuusvallankumouksen kuin teollinen vallankumous aikoinaan. Tähän on periaatteessa mahdollisuus: siinä missä teollinen vallankumous on automatisoinut tavaroiden tuotannon, sähköisillä palveluilla voidaan automatisoida tiedon käsittely. Mutta monet eivät tunnu tajuavan, miten paljon työtä ja ymmärrystä vaatii, että tästä oikeasti saadaan tuottavuus kehittymään. (...)
(nettipäiväkirja 14.09.2015) Itse asiassa vielä paljon mielenkiintoisempi kuin [versionhallintapohjainen tehtävälista] on ajatus siitä, että hoidetaan koodikatselmointi muutamalla skriptillä versionhallinnassa. Omituista kyllä, en ole löytänyt tällaista systeemiä muualta. Olisikohan jopa kehittämisen arvoinen? (...)
(nettipäiväkirja 09.09.2015) Tein koulutusta varten yksinkertaisen, [git]iin integroidun issue tracking -järjestelmän (jee, kyllä kannatti?). Koulutuksessa sitten puolestaan erään koulutettavan mielestä tämä oli oikeastaan ''hyvä'' idea, joten aloin etsiä jotain kunnollista vastaavaa. Minua ei oikeastaan kiinnosta uudelleentoteuttaa issue trackereiden toiminnallisuutta, kunhan demosin, että tässäkin on kyse enemmän käytäntöjen muodostamisesta kuin työkaluista (tai [ohjelmistoratkaisu]ista). (...)
Selvitellessä, onko jokin [versionhallintapohjainen tehtävälista] jo olemassa, tuli myös vastaan http://todotxt.com/ . Mutta itse en ole tarvinnut sellaista, koska tämä wiki sisältää jo oman [TODO]ni (ja muitakin, esim. [varpushaukan TODO]). (...)
(Tähän kyselyyn ei ole tarkoitus vastata täällä wikissä, vaan muokkaan sitä täällä myöhempää toteutusta varten.) (...)
(nettipäiväkirja 19.11.2014) Maailma muuttuu huomaamatta pikku hiljaa paremmaksi. Nykyään alkaa esimerkiksi tietorakenteille olla olemassa aika vakiintunut, kieliriippumaton serialisointiformaatti, JSON. JSON ei edes ole hirveän huono, en itse asiassa ole kuullut mitään valitusta siitä. Netistä löytyy valitusta jos oikein etsii, mutta useimmat niistä alkavat maininnalla "älkää nyt ymmärtäkö väärin, JSON on mahtava siinä mihin se on suunniteltu...". (...)
(nettipäiväkirja 03.12.2014) Yritän selvitellä tulevaa [Git]-koulutusta varten, mistä kaikista tiedoista git pitää kirjaa. Tämä on itse asiassa yllättävän vaikeaa, sillä kun asiaa yrittää googlata, tulee selityksiä vain Gitin ''säilössä'' olevista tiedoista (git objects), kun oikeasti git pitää kirjaa myös ainakin: (...)
Tätä [versionhallinta]järjestelmää käsitellään lähinnä näissä nettipäiväkirjan merkinnöissä: (...)
Tämä on jatkoa sivulle [git ja muutosalgebra]. (...)
(nettipäiväkirja 04.12.2012) Joudun opettelemaan [git]in käyttöä. Myönnän, että minulla on asennevammakin sen suhteen, mutta jotenkin ärsyttää, kun ne esittelevät gitin ominaisuuksia jotenkin edistyksellisinä. Gitissä on kaksi merge-tapaa, CVS:n ajoilta periytyvä 3-way merge (jolle tiedetään paljon tapauksia, jossa on mahdotonta löytää järkevää merge basea; ks. esim. http://www.gelato.unsw.edu.au/archives/git/0504/2279.html) sekä loistava uusi rebase, joka tekee eri brancheissa oleville muutoksille käytännössä samaa kuin [darcs] eli linearisoi ne yhdeksi historiaksi. Nimi "rebase" tulee siitä, että muutokset pysyvät samoina mutta siirretään uuteen kontekstiin, toisten muutosten päälle. (...)
Versionhallinta tarkoittaa menetelmiä, joilla tiedostoista (tai muista tietovarastoista) pidetään muistissa, millaisia ne ovat olleet missäkin vaiheessa, kuka niitä on muuttanut, milloin ja miten (sekä usein vapaamuotoisia kuvauksia siitä, miksi). Toisin päin versionhallinta kertoo tiedostoista (tai muista tietovarastoista), miten ne ovat muodostuneet, mikä niissä on kenenkin tekemää ja mitä muutoksia ne sisältävät. (...)
[Versionhallinta]järjestelmissä yksi erittäin hyödyllinen mutta harvemmin tarvittu ominaisuus on branchaus, siis "oksien" (versiohaarojen) luonti. (...)
[Versionhallinta]työkalu, ''Concurrent versions system''. Itse asiassa useimmat ihmiset selviävät vähemmälläkin, mutta esim. RCS on mielestäni sen verran sotkuinen, ettei sitä ole mitään syytä käyttää CVS:n sijaan. (Ja itse asiassa CVS on sen verran sotkuinen, ettei sitä nykyään ole juurikaan syytä käyttää [git]:n sijaan. Paitsi ohjelmien saatavuus.) Useamman ihmisen projekteissa tarvitaan vähintään CVS:a. (Muita, paremmuuteen pyrkiviä ratkaisuja ovat BitKeeper, arch, [subversion] (svn) jne.) (...)
Kaveri linkkasi kirjan ''Computational Fairy Tales'' (http://computationaltales.blogspot.fi/p/posts-by-topic.html?m=1). Vaikuttaa mielenkiintoiselta. (...)
http://www.darcs.net/ (...)
Katso myös muita [Unix-aiheisia artikkeleita]. (...)
Tällä sivulla esitän ajatuksia kursseiksi, joita voin järjestää. Liittyy työnhakuuni freelancer-luennoitsijana. Tuntimäärät sulkeissa ovat opetustunteja; harjoitustehtäviin voi olettaa kuluvan suunnilleen saman verran aikaa. (...)
!!! ke 15.4.2009 (...)
Pitämäni versionhallintajärjestelmä. http://wiki.gnuarch.org/ Mainittakoon, että [Darcs] on vielä parempi. (...)
RSS-feedeillä saa kaikenlaista ihmeellistä aikaan. Periaatteessa melkein mitä tahansa, mihin tulee muutoksia, voi seurata RSS-feedinä. Jos esimerkiksi voisin muuntaa sisääntulevat postini, IRC-gallerian kommenttini, IRC:ssä saamani puhuttelut ja seuraamieni www-sivujen muutokset RSS-feedeiksi, voisin seurata niitä yhdistetysti... (...)
http://moinmoin.wikiwikiweb.de/ (...)
[WikiWiki]n yksi kantava ajatus on se, että tiedostot ovat yhtä lailla luettavaksi kuin muokattavaksi. Käytettävyyttä lisää myös se, että ''heti'' kun näkee sivulla jotain korjattavaa, voi ottaa sen käsittelyyn. (...)
Meidän kulttuurimme uskonsodat ovat jänniä ajanvietteitä, joissa taistellaan triviaalien tai vähämerkityksisten valintojen paremmuudesta: Coca-Colan ja Pepsin, Macintoshin ja IBM-yhteensopivan (joita nykyään kutsutaan älyvapaasti PC:iksi, PC=personal computer), kasvissyönnin ja sekasyönnin. Erityisesti [ATK]-alalla uskonsotia on paljon ja monenlaisia: (...)
!!! 28.11.2005 (...)
(Sori, jouduin muuttamaan sivun takaisin: joku oli muokannut tätä emacsilla, joka oli tuhonnut ääkköset.) (...)
Teknologia on jonkinlaista suurta ja tarkkaa hommaa, jolla saadaan aikaan jotain, mitä muuten ei saataisi. Teknologiaa ovat myös ne sosiokulttuurilliset ilmiöt, mitä tämä aikaansaaminen aiheuttaa. Meidän kulttuurimme on (ollut noin 500 viime vuotta) pitkälti teknologian ohjailemaa, mikä ei ole ollenkaan epäoikeudenmukaista, koska teknologiamme on (ollut aina) kulttuurimme ohjailemaa. (...)
Are too! (...)
http://subversion.tigris.org/ (...)
!!! 5.5. 2004 (...)
PikiPiki on hyvin minimalistinen wikiklooni, joka noudattaa verrattain perinteisiä merkintäsääntöjä (http://c2.com/cgi/wiki?TextFormattingRules) ja perinteistä ulkonäköä. (...)
Nämä sivut liittyvät versionhallintaan muuten vain: