hwechtla-tl: 
Versioitu tiedostojärjestelmä
Versioidussa tiedostojärjestelmässä ei voi tuhota tiedostoja
kokonaan: aina, kun tekee jotain, mikä ylikirjoittaa vanhan tiedoston,
siitä tuleekin uusi versio kyseiselle tiedostolle.  Unixeista on
perinteisesti puuttunut versioiva tiedostojärjestelmä, joten
versioinnin lisääminen perinteisen tiedostojärjestelmän päälle
edellyttää tarkkoja valintoja.
Päämäärät:
-  Semanttisesti yksinkertainen
 -  Sallii tarkkailla tiedostojärjestelmää, ikään kuin se ei olisi versioitu (eli perinteiset tiedostojärjestelmän tutkailut näyttävät uusimmat versiot tiedostoista)
 -  Käyttäjä voi halutessaan puuttua vanhoihin versioihin
 
semantiikka:
-  jokaisesta tiedostosta on tallessa n versiota, joita voi käsitellä
    erikseen samalla lailla kuin versioimattomia tiedostoja; (tai
    mahdollisesti vanhat versiot ovat aina read-only)
 -  versioilla on numerot, jotka ovat positiivisia kokonaislukuja.
 -  jos tiedostolle ei määritetä versionumeroa, valitaan
    versionumeroltaan suurin (uusin) versio luettaessa, ja perustetaan
    uusi versio (suurin versionumero + 1) kirjoitettaessa.
 -  kun kirjoitetaan tiedosto, josta ei ole vielä yhtäkään versiota,
    se saa versionumeron 1.
 -  versio voi olla merkittynä poistetuksi;  tiedoston poistaminen ilman
    versiomäärittelyä perustaa siitä uuden version, joka merkitään
    poistetuksi.
 -  hakemistolistaus näyttää vain uusimmat versiot tiedostoista, eikä
    ollenkaan tiedostoja, joiden uusin versio on poistettu.
 -  vanhoja versioita voidaan (tiedostojärjestelmän asetuksista
    riippuen) poistaa vailla kummempaa varoitusta, esim. uusien
    tiedostoversioiden varauksen yhteydessä.
 -  versiot voi listata kohtelemalla tiedostoa hakemistona
 
syntaksi:
-  tiedosto ilman versiomäärittelyä käyttää perinteistä
    Unix-syntaksia: tiedosto;
 -  tiedostoon voi liittää versiomäärittelyn lisäämällä perään
    kauttaviivan (/) ja versionumeron, esim. tiedosto/13;
 -  tiedoston vanhoihin versioihin voi viitata negatiivisilla luvuilla:
    tiedosto/-1 tarkoittaa viime versiota, tiedosto/-2 sitä
    edellistä jne.
 -  tiedoston versioista saa hakemistomaisen listauksen pakottamalla
    tiedoston hakemistoksi tiedosto/ -syntaksilla (ehkä;
    tarvitaankohan tätä?)
 
API:
-  open() palauttaa filehandlen uusimpaan versioon
 -  write() alkaa kirjoittaa uutta versiota, mutta ei vielä assosioi
    sitä tiedostoon
 -  useampi write():a yhtaikaa käyttävä prosessi muokkaa tiedoston
    samaa versiota (ts. "tulevaa uutta versiota")
 -  close() assosioi uuden version tiedostoon uudella
    versionumerolla, mahdollisesti samoin sync()
 -  atomiset operaatiot, kuten link(), unlink() jne. assosioivat
    uuden version suoraan tiedostoon
 -  jos tiedostosta osoitetaan suoraan jokin versio, sitä kohdellaan
    kuin perinteistä Unix-tiedostoa (eli uusimman version pystyy
    tuhoamaan määrittämällä sen suoraan)
 
kategoria: projektit
kommentoi
 (viimeksi muutettu 01.01.2006 10:32)