(toiminnot)

hwechtla-tl: Muutosten merge

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Tämän wikin edit conflictit hoidetaan yksinkertaisella algoritmilla nimeltä "3-way merge".

Ongelma on tässä:

  1. kuinka moni käyttäjä tahansa voi pyytää itselleen sivun muokattavaksi.
  2. niin kauan, kuin he kirjoittavat muutoksiaan, ei ole mitään keinoa tietää, ovatko he luopuneet niiden kirjoittamisesta vai eivät.
  3. niin kauan, kuin muutoksia ei ole lähetetty, muut käyttäjät eivät voi nähdä niitä eivätkä tietää niistä
  4. seurauksena syntyy väistämättä tilanteita, joissa kaksi ihmistä lähtee muokkaamaan samaa versiota sivusta, ja yksi tekee yksiä muutoksia, toinen toisia.
  5. kun nämä muutokset tulevat palvelimelle, se ei ollenkaan tiedä, mistä versiosta käyttäjät ovat lähteneet sivua muokkaamaan, ja sen vuoksi olettaa heidän lähteneen aina uusimmasta versiosta, eli se tallettaa sellaisenaan aina sille viimeksi lähetetyn version.
  6. tämä merkitsee, että aiemmin tallettaneen käyttäjän muutokset menetetään (koska niitä ei ole myöhemmin tallettaneen käyttäjän versiossa).

Ratkaisu on tällä.

  1. Samalla, kun selaimelle lähetetään sivun sisältö muokattavaksi, se lähetetään myös säilöttäväksi piiloparametriin.
  2. niinpä, kun käyttäjä lähettää muokkaamansa sivun, selain lähettää samalla, millaisesta versiosta hän alkoi sitä muokata.
  3. näiden väliset erot, siis varsinaiset käyttäjän tekemät muutokset, lasketaan palvelimen puolella.
  4. muutokset liitetään palvelimella olevaan sivun versioon, minkälainen se sattuukin sillä hetkellä olemaan.
  5. tällä tavoin, jos kaksi ihmistä muuttaa sivua yhtaikaa, molempien muutokset kyetään sisällyttämään tiedostoon. (Olkoon versio, josta molemmat ovat lähteneet, A; ensin tallettavan käyttäjän versio B; ja toiseksi tallettavan C. B:n talletus aiheuttaa sen, että A:n ja B:n väliset muutokset liitetään A:han, jolloin tuloksena on B; ja C:n talletus aiheuttaa, että A:n ja C:n väliset muutokset liitetään B:hen, jolloin tuloksena on uusi versio "B+C", jossa on sekä B:n että C:n muutokset A:han verrattuna.)
  6. jos nämä kaksi muuttavat samaa kohtaa sivusta, tämä merkitään sivuun ja molempien muutokset ovat näkyvissä. Tällaista tilannetta kutsutaan konfliktiksi.

Tämä on suoraviivaisempi versio subversion-sivulla selitetystä yhdistelymallista.

kategoria: wiki


kommentoi (viimeksi muutettu 04.12.2012 23:21)