Zaključavanje

Subverzija generalno radi najbolje bez zaključavanja, koristeći Kopiraj-Izmeni-Stopi metode opisane ranije u odeljak pod imenom „Kopiraj-Menjaj-Stopi rešenje“. Ipak, postoji nekoliko primera kada možete imati potrebu da primenite neku vrstu politike zaključavanja.

Najpre treba obezbediti da Subverzioni server dograđen najmanje na verziju 1.2. Ranije verzije uopšte ne podržavaju zaključavanje. Ako koristite file:// pristup, svakako samo vaš klijent treba da bude obnovljen.

Stablo značenja zaključavanja

U ovom poglavlju, i skoro svuda u ovoj knjizi, reči katanac i zaključavanje opisuju mehanizam mežusobnog isključivanja korisnika da se izbegnu sudari pri urezivanju. Na nesreću, postoje dve druge vrste oznake katanac sa kojim Subverzija, i ova knjiga, ponekad moraju da računaju.

Drugo je katanci radne kopije, koji se koristi interno od Subverzije za prevenciju sudara između više Subverzionih klijenata koji rade na istoj radnoj kopiji. Uobičajeno je da stavite ove katance kad god je komanda kao uskladi/ureži/... prekinuta zbog greške. Ovi katanci se uklanjaju dok radi komanda čišćenja na radnoj kopiji, kako je opisano u odeljak pod imenom „Čišćenje“.

I treće, fajlovi i folderi se mogu zaključati ako ih koristi drugi proces, na primer ako imate dokument u vordu otvoren programom Vord, onda je taj fajl zaključan i ne može mu se pristupiti sa TortoiseSVN.

Možete generalno zaboraviti ove druge vrste zaključavanja sve dok nešto ne pođe loše i zahteva brigu o zaključavanju. U ovoj knjizi katanac znači prvu vrstu sve dok nasuprot ne bude brisanja iz konteksta ili eksplicitni stanje.

Kako zaključavanje radi na Subverziji

Podrazumevano, ništa nije zaključano i svako ko ima pristup urezivanju može urezivati izmene u svaki fajl u bilo koje vreme. Ostali će uskladiti svoje radne kopije periodično i izmene u spremištu će biti stopljene sa lokalnim izmenama.

Ako vi Stavite Katanac na fajl, onda samo vi možete urezivati taj fajl. Urezivanje svih ostalih korisnika je blokirano sve dok ne skinete katanac. Zaključan fajl ne može biti izmenjen na bilo koji način u spremištu, on ne može biti obrisan ili preimenovan, osim od vlasnika katanca.

Važno

Zaključavanje nije pridruženo specifičnom korisniku, ali specifičnom korisniku i radnoj kopiji. Zaključavanje u radnoj kopiji brani da isti korisnik urezuje zaključan fajla iz druge radne kopije.

Kao primer, zamislimo da korisnik DŽon ima radnu kopiju u kancelarijskom PC. On započinje rad na nekoj slici, i zaključava fajl. Kada napusti svoju kancelariju on još nije završio sa tim fajlom, tako da ga nije otključao. Vraća se kući, gde DŽon takođe ima radnu kopiju, i odluči da još malo radi na projektu. Ali ne može da menja ili urezuje isti fajl slike jer je zaključavanje ostalo u radnoj kopiji na poslu.

Međutim, drugi korisnici neće neophodno znati da ste uklonili katanac. Osim da provere status zaključavanja regularno, najpre oni moraju znati o tome kada urezivanje utkaže, što u većini slučajeva nije mnogo krisno. Da biste učinili to lakšim za manipulaciju postoji nova Subverziona osobina svn:needs-lock. Kada je ova osobina podešena (na bilo koju vrednost) na fajlu, kadgod se fajl preuzima ili uskladi, lokalna kopija postaje samo za čitanje osim ako ta radna kopija drži katanac za fajl. Ovo deluje kao upozorenje tako da ne možete uređivati taj fajl osim ako najpre ne dobijete katanac. Fajlovi koji su verzionisani i samo za čitanje označeni su specijalnim prekrivačem u TortoiseSVN da ukažu da treba da dobijete katanac pre uređenja.

Zaključavanje je upisano u lokaciji radne kopije kao i vlasnik. Ako imate više radnih kopija (kući, na poslu) vi možete samo da držite katanac na jednoj od tih radnih kopija.

Ako jedan od vaših saradnika traži katanac i ode na odmor bez otključavanja šta da se radi? Subverzija omogućava način da se forsira zaključavanje. Otključavanje od još nekog označeno je kao Razbijanje katanca, a nasilno otključavanje koje neko uradi zove se Krađa katanca. Prirodno, ovo nisu stvari koje treba da radite olako ako želite da ostanete prijatelj sa saradnicima

Zaključavanje se upisuje u spremištu i katanac žeton se kreira u vašoj lokalnoj radnoj kopiji. Ako postoji različitos, na primer ako još neko ima slomljen katanac, lokalni žeton katanac postaje neispravan. Spremište je uvek definitivna referenca.

Zaključavanje

Izaberite fajl(ove) u vašoj radnoj kopiji za koje želite da dobijete katanac, zatim izaberite komandu TortoiseSVNZaključaj....

Slika 4.60. Dijalog zaključavanja

Dijalog zaključavanja


Dijalog se pojavljuje dozvoljavajući da unesete komentar, tako ostali mogu videti zašto ste zaključali fajl. Komentar nije obavezan i trenutno se koristi samo sa Svnserve osnovanim spremištima. Ako ( i samo i) trebate da ukradete katanac od nekog proverite Još uvek zaključan boks, zatim kliknite na OK.

Možete setovati osobinu projekata tsvn:logtemplatelock da obezbedite šablonizovanu poruku da ih korisnici popune kao poruke zaključavanja . Pogledajte odeljak pod imenom „Podešavanje projekta“ za instrukcije o podešavanju osobina projekta.

Ako izaberete folder i onda koristite TortoiseSVNZaključaj... dijalog zaključavanja će se otvoriti sa svakim fajlom u svakom pod-folderu izabranom za zaključavanje. Ako stvarno želite da zaključate celu hijerarhiju, ovo je način da to uradite, ali ćete postati jako nepopularni među saradnicima ako im zaključate ceo projekat. Koristite pažljivo...

Otključavanje

Da biste osigurali da ne zaboravite da otključate ne treba vam ništa posebno, zaključani fajlovi su prikazani u dijalogu urezivanja i izabrani podrazumevano. Ako nastavite sa urezivanjem, katanac koji držite na izabranim fajlvima se uklanja, čak i ako fajlovi nisu izmenjeni. Ako ne želite da uklonite katanac sa nekih fajlva možete ih otčekirati (ako nisu izmenjeni). Ako želite da držite katanac na fajlu koji ste izmenili imate da omogućite Drži katanac čekboks pre urezivanja izmena.

Da se ukloni katanac ručno, izaberite fajl(ove) u vašoj radnoj kopiji za koje hoćete da uklonite katanac, zatim izaberite komandu TortoiseSVNOtključaj Ništa dalje ne treba uneti jer TortoiseSVN kontaktira spremište i uklanja katance. Takođe možete koristiti komandu na folderu da uklonite sve katance rekurzivno.

Provera statusa zaključavanja

Slika 4.61. Provera dijaloga izmena

Provera dijaloga izmena


Da vidite koje katance vi i drugi držite, koristite TortoiseSVNProvera izmena.... Lokalno držan katanac žetoni se prikažu trenutno. Da biste proverili koje katance drže ostali (i da vidite da li je neki vaš katanac slomljen ili ukraden) treba da kliknete na Proveri Spremište.

Iz kontekst menija ovde možete takođe staviti ili otkačiti katanac, kao i slomljene i ukradene katance koje drže drugi.

Izbegavanje razbijanja i krađa katanca

Ako slomite ili ukradete nekom drugom katanac bez pitanja možete potencijalno uzrokovati gubitak posla. Ako radite sa nestopivim tipom fajlva i nekom ukradete katanac kada vratite katanac oni su slobodni da provere svoje izmene i prekriju vaše. Subverzija ne gubi podatke ali vi možete izgubiti radnu zaštitu tima koje va zaključavanje omogućava.

Pravljenje nezaključanih fajlova samo za čitanje

Kako je napomenuto gore, mnogo efektivniji način za korišćenje zaključavanja je podešavanjem svn:needs-lock osobine na fajlu. Uporedite sa odeljak pod imenom „Podešavanje projekta“ za instrukcije kako podesiti te osobine. Fajlovi sa tim osobinama podešenim će uvek biti preuzimani i obnovljeni sa setovanim flegom samo-za-čitanje osim ako vaša kopija drži katanac.

Kao podsetnik, TortoiseSVN koristi specijalni prekrivač da označi to.

Ako radite sa politikom da svaki fajl može biti zaključan tada možda shvatite da je lakše da koristite Subverzionu suto-props osobinu da podesite osobine automatski svaki put kad dodajete novi fajl. Pročitajte odeljak pod imenom „Automatsko podešavanje osobina“ za dalje informacije.

Zakačive skripte za zaključavanje

Kada kreirate novo spremište sa Subverzijom 1.2 ili višom, četiri šablona zakačaljki se kreira u spremištu zakačaljke folder.One se pozivaju pre i posle postavljanja katanca i pre i posle skidanja katanca.

Dobra je ideja da se instalira post-zaključavanja and post-otključavanjak zakačiva skripta na serveru koja šalje epoštu označivši fajl koji je zaključan. Sa takvom skriptom svi vaši korisnici mogu biti obavešteni ako neko zaključa/otključa fajl. Možete naći primer zakačive skripte hooks/post-lock.tmpl u vašem folderu spremišta

Možete takođe koristiti zakačljke da onemogućite lomljenje i krađu katanaca, ili možda graničiti to na imenovanog administratora. Ili možda želite da pošaljete epoštu vlasnicima kada je neki od njihovih katanaca slomljen ili ukraden.

Pročitajte odeljak pod imenom „Zakačive skripte sa serverske strane“ za više infižormacija.