Subverzija u akcija

Radna kopija

Već ste čitali o radnoj kopiji; sada ćemo demonstrirati kako je Subverzioni klijent kreira i koristi.

Subverziona radna kopija je obično stablo foldera u vašem lokalnom sistemu, koje sadrži kolekciju fajlova. Vi možete urediti ove fajlove kako želite, i ako su fajlovi izvornog koda, možete od njih kompajlirati vaš program na uobičajen način. Vaša radna kopija je vaša lična privatna radna površina: Subverzija neće inkorporirati izmene drugih ljudi, niti će uraditi vaše promene dostupne drugima, sve dok joj eksplicitno ne kažete da to uradi.

Kada ste napravili neke izmene u fajlovima u vašoj radnoj kopiji i proverite da to radi ispravno, Subverzija vam omogućava da komandama publikujete vaše izmene drugim ljudima koji rade sa vama na vašem projektu (pisanjem u spremište). Ako drugi ljudi publikuju svoje izmene, Subverzija vam omogućava komandama za spajanje tih izmena u vaš radni folder (čitanjem iz spremišta).

Radna kopija takođe sadrži neke dodatne fajlove, kreirane i podržane od Subverzije, da pomognu njeno izvršenje ovih komandi. U osnovi, vaša radna kopija sadrži poddirektorijum nazvan .svn, takođe poznat kao radne kopije administrativni direktorijum . Fajlovi u administrativnom direktorijumu pomažu Subverziji da prepozna koji fajlovi sadrže nepublikovane izmene, i koji fajlovi su neusaglašeni u odnosu na ostali rad. Pre 1.7 Subverzija je održavala .svn administrativne poddirektorijume u svakom verzionisanom direktorijumu radne kopije. Subverzija 1.7 uzima potpuno različit pristup i svaka radna kopija sada ima samo jedan administrativni poddirektorijum koji je neposredan potomak korena radne kopije.

Tipično Subverziono spremište često sadrži fajlove (ili izvorni kod) za više projekata; obično, svaki projekat je subfolder u stablu fajlsistema u spremištu. U ovom uređenju korisnička radna kopija obično će korespondirati posebnom podstablu spremišta.

Na primer, pretpostavimo da imate spremište koje sadrži dva sofverska projekta.

Slika 2.6. Fajlsistem spremišta

Fajlsistem spremišta

Drugim rečima, koreni folder spremišta ima dva podfoldera: paint and calc.

Da bi se dobila radna kopija morate preuzeti neko podstablo iz spremišta. (Termin preuzimanje može zvučati kao da ima nešto da se uradi sa zaključavanjem i rezervisanjem resursa, ali to niječ to jednostavno kreira privatnu kopiju projekta za vas.)

Pretpostavimo da ste napravili izmene u button.c. Pošto .svn direktorijum pamti podatke izmene fajla i originalni sadržaj, Subverzija može reći da ste izmenili fajl. Međutim, Subverzija ne čini vaše izmene javnim sve dok joj to ne kažete. Čin publikovanja vaših izmena obično se zove urezivanje (ili upisivanje ) izmena u spremište.

Da bi publikovali vaše izmene drugima, možete koristiti Subverzionu komandu ureži.

Sada vaše izmene u button.c su urezane u spremište; ako drugi korisnik proveri radnu kopiju /kalk, videće vaše izmene u zadnjoj verziji fajla.

Pretpostavimo da imate saradnika Sali, ko proverava radnu kopiju /kalk u isto vreme kad i vi. Kada urezujete vaše izmene u button.c, Salina radna kopija ostaje nepromenjena; Subverzija menja radnu kopiju samo na zahtev korisnika.

Da bi uskladila svoj projekat Sali mora pitati Subverzilu da uskladi njenu radnu kopiju korišćenjem Subverzione komande uskladi. Ovo će uključiti vaše izmene u radnu kopiju isto kao što bilo koji drugi koji su urezani od provere.

Zabeležite da Sali ne treba da specifira koje fajlove uskladiti; Subverzija koristi informacije u .svn folderu, i dalje informacije u spremištu, da odluči koje fajlove treba uskladiti.

URL spremišta

Subverzionom spremištu može biti pristupljeno kroz mnogo različitih metoda - na lokalnom disku, ili kroz razne mrežne protokole. Mest spremišta, međutim, je uvek na URL. URL šema označava metod pristupa:

Tabela 2.1. URL pristup spremištu

ŠemaPristupni metod
file:// Direktni pristup spremištu na lokalnom mrežnom uređaju.
http:// Pristup preko VebDAV protokola za Subverziono poznavanje Apaš servera.
https:// Isto kao http://,ali sa SSL enskripcijom.
svn:// Neautentičan TCP/IP pristup preko običnog protokola ka svnserve serveru.
svn+ssh:// autentičan, šifriran TCP/IP pristup preko običnog protokola ka svnserve serveru.

Za mnoge delove Subverzioni URLovi koriste standardnu sintaksu dozvoljavajući serverskim imenima brojevima portova da budu specificirani kao deo URLa. file:// metod pristupa se normalno koristi za lokalni pristup, takođe može se koristiti sa UNC putnjom do mrežnog domaćina. URL dakle uzima oblik file://hostname/path/to/repos. Za lokalnu mašinu hostname deo URL se zahteva da nije prisutno ili da je localhost. Iz ovog razloga lokalna putanja se normalno javlja sa tri kose crte file:///path/to/repos.

Takođe korisnici file:// šeme na Vindouz platformama treba da koriste neoficijalnu standardnu sintaksu za pristup spremištu koja su na istoj mašini, ali na različitim uređajima od onog gde je klijentov radni uređaj. Svaka od sledeće dve sintakse URL putanja će raditi gde je X drajv na kome spremište obitava.

file:///X:/path/to/repos
...
file:///X|/path/to/repos
...
      

Primetimo da URL koristi obične kose crte čak i kad prirodni (ne URL) oblik putanje na Vindouzu koristi obrnute kose crte.

Možete pristupiti FSFS spremištu preko mrežnog deljenja ali ovo nije preporučljivo zbog raznih razloga:

  • Vi dajete direktan pristup upisivanju svim korisnicima, tako oni mogu slučajno obrisati ili uništiti fajl sistem spremišta.

  • Svi mrežni protokoli deljenja fajlova ne podržavaju zahteve zaključavanja subverzije. Jednog dana naćićete da je vaše spremište suptilno uništeno.

  • Potrebno je da podesite pristupnu dozvolu na pravi način. SAMBA je posebno teška u ovom pogledu.

  • Ako jedna osoba instalira novu verziju klijenta koja dogradi format spremišta svi ostali neće biti sposobni da pristupe spremištu dok takođe ne dograde novu verziju klijenta.

Revizije

Operacija svn ureži publikuje izmene bilo kog broja fajlova i foldera kao jednu atomik transakciju. U vašoj radnoj kopiji možete menjati sadržaj fajlova, kreirati, brisati, preimenovati i kopirati fajlove i foldere i onda urežete ukupan skup izmena kao jedinicu.

U spremištu savako urezivanje se trtira kao atomik transakcija: ili se urežu sve promene ili nijedna. Subverzija čuva ovu atomičnost u slučaju pucanja programa ili sistema, mrežnih problema i drugih akcija korisnika.

Svaki put kada spremište pristupi urezivanju to kreiira novo stanje stabla fajlsistema nazvanog revisija. Svaka revizija se označava jedinstvenim prirodnim brojem koji je za jedan veći od broja prethodne revizije.Početna revizija sveže kreiranog spremišta označena je nulom i ne sadrži ništa osim praznog korenog foldera.

Lep način da se vizualizuje spremište je serija stabala. Zamislimo oblast revizionih brojeva, počevši od nule, razvučenih s leva u desno. Svaki revizioni broj ima fajlsistem stablo visi ispod njega i svako stablo je naznaka kako spremište izgleda posle urezivanja.

Slika 2.7. Spremište

Spremište

Važno je primetiti da radna kopija ne korespondira uvek bilo kojoj pojedinačnoj reviziji u spremištu; ona može sadržati fajlove iz više različitih revizija. Na primer, pretpostavimo da preuzimate radnu kopiju iz spremišta čija je najskorija revizija 4:

calc/Makefile:4
integer.c:4
button.c:4
      

Trenutno ovaj radni folder odgovara tačno reviziji 4 u spremištu. Međutim, pretpostavimo da izmenite button.c, i urežete izmene. Uzmimo da nije bilo drugih urezivanja, vaše urezivanje kreira reviziju 5 spremišta i vaša radna kopija sada izgleda ovako:

calc/Makefile:4
integer.c:4
button.c:5
      

Pretpostavimo to, u tom trenutku, Saki urezuje izmene integer.c, kreirajući reviziju 6. Ako koristite svn uskladi da dovedete vašu radnu kopiju u usklađeno stanje to će izgledati ovako:

calc/Makefile:6
integer.c:6
button.c:6
      

Saine izmene integer.c se pojavljuju u vašoj radnoj kopiji i vaše izmene su još prisutne u button.c. U ovom primeru, tekst u Makefile je identičan u revizijama 4,5 i 6, ali Subverzija će označiti vašu radnu kopiju Makefile revizijom 6 da indicira da je još tekuća. Tako, posle urađenog čistog obnavljanja na vrh vaše radne kopije ona će generalno korespondirati tačno jednoj reviziji u spremištu.

Kako radna kopija prati spremište

Za svaki fajl u radnom folderu Subverzija upisuje dva važna komada informacija u .svn/ administarativnu oblast:

  • na koju reviziju je radni fajl baziran (ovo se zove fajlova radna revizija ), i

  • vremenski marker zapisan kada se lokalna kopija zadnji put uskladila u spremištu.

Dajući ove informacije, govoreći spremištu, Subverzija može reći koje od sledećih četiri statusa ima radni fajl:

Neizmenjen i tekući

Fajl je neizmenjen u radnom folderu, i nema izmena tog fajla pri urezivanju u spremište od njegove radne revizije. Urezivanje fajla ne radi ništa, i obnavljanje fajla ne radi ništa.

Lokalno izmenjen i tekući

Fajl je izmenjen u radnom folderu i izmene nisu urezane u spremište od osnovne rebžvizije. Postoje lokalne izmene koje još nisu urezane u spremište, tako urezivanje fajla će pratiti publikovanje vaših izmena u spremište, a obnavljanje fajla neće uraditi ništa.

Nepromenjen i zastareo

Fajl nije izmenjen u radnom folderu ali je izmenjen u spremištu. Fajl bi trebalo da bude obnovljen da se učini savremen sa javnom revizijom. Urezivanje fajla ne radi ništa, a obnavljanje fajla uvodi zadnje izmene u vašu radnu kopiju.

Lokalno izmenjen i zastareo

Fajl je izmenjen u oba slučaja i u radnom folderu i u spremištu. Urezivanje fajla biće neuspešno sa greškom zastareo. Fajl se mora najpre uskladiti; sa komandomuskladi pokušaće se spajanje javnih izmena sa lokalnim izmenama. Ako Subverzija ne može potpuno da stopi na razuman način automatski, ona ostavlja korisniku da razreši konflikt.