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 imenika 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 imenik (čitanjem iz spremišta).

Radna kopija takođe sadrži neke ekstra fajlove, kreirane i održavane Subverzijom, da joj pomognu da izvuče ove komande. Posebno, svaki imenik u vašoj radnoj kopiji sadrži podimenike označene .svn, takođe poznat kao radna kopija administrativni imenik. Fajlovi u svakom administrativnom imeniku pomažu Subverziji da prepozna koji fajlovi sadrže nepublikovane izmene, i koji fajlovi su zastreli u odnosu na rad drugih.

Tipično Subverziono spremište često sadrži fajlove (ili izvorni kod) za više projekata; obično, svaki projekat je subimenik 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 imenik spremišta ima dva podimenika: paint and calc.

Da biste dobili radnu kopiju morate preuzeti neko podstablo spremišta. (Termin preuzeti može zvučati kao nešto što se radi zaključavanjem ili rezervisanjem resursa, ali to nije to; to jednostavno kreira privatnu kopiju projekta za vas).

Pretpostavimo da ste napravili izmene u button.c. Kako .svn imenik pamti datum izmene fajla i originalni sadržaj, Subverzija vam može reći da ste izmenili fajl.Čin publikovanja vaših izmena je najčešće poznat kao urezivanje (ili prijavljivanje) 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 ažurirala svoj projekat Sali mora pitati Subverzilu da ažurira njenu radnu kopiju korišćrnjem Subverzione komande ažuriraj. 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 ažurira; Subverzija koristi informacije u .svn imeniku, i dalje informacije u spremištu, da odluči koje fajlove treba ažurirati.

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 bezbedno pristupiti FSFS spremištu preko mrežne podele, ali vi ne možete pristupiti BDB spremištu na ovaj način.

Upozorenje

Ne kreirajte Berkli DB spremište na mrežnom deljenom prostoru. To ne može postojati na udaljenom fajlsistemu. Čak ni ako imate mrežni drajv označen slovom drajva. Ako pokušate da koristite Berkli DB na mrežnoj podeli rezultati su nepredvidljivi - možete videti misteriozne greške ili će proći meseci dok ne ustanovite da vaša baza podataka spremišta sa puno grešaka.

Revizije

Operacija svn ureži publikuje izmene bilo kog broja fajlova i imenika kao jednu atomik transakciju. U vašoj radnoj kopiji možete menjati sadržaj fajlova, kreirati, brisati, preimenovati i kopirati fajlove i imenike 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 imenika.

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 imenik 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 ažuriraj da dovedete vašu radnu kopiju u ažurno 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 ažuriranja 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 imeniku Subverzija upisuje dva važna komada informacija u .svn/ administarativnu oblast:

  • na koju reviziju je vaša radna kopija zasnovana )to se zove fajlova radna revizija), i

  • vremenski marker zapisan kada se lokalna kopija zadnji put ažurira 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 imeniku, i nema izmena tog fajla pri urezivanju u spremište od njegove radne revizije. Urezivanje fajla ne radi ništa, i ažuriranje fajla ne radi ništa.

Lokalno izmenjen i tekući

Fajl je izmenjen u radnom imeniku 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 ažuriranje fajla neće uraditi ništa.

Nepromenjen i zastareo

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

Lokalno izmenjen i zastareo

Fajl je izmenjen u oba slučaja i u radnom imeniku i u spremištu. Urezivanje fajla biće neuspešno sa greškom zastareo. Fajl se mora najpre ažurirai; sa ažuriraj komandom 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.