Manuals

Zamknutie

Subversion všeobecne funguje najlepšie bez zamykania použitím metód Kopírovať, upraviť, zlúčiť opísaných predtým v časti “Riešenie Kopírovať-Upraviť-Zlúčiť”. Existuje však niekoľko prípadov, keď budete musieť implementovať určitú formu politiky zamykania.

Najskôr sa musíte ubezpečiť, že je váš server Subversion inovovaný minimálne na verziu 1.2. Staršie verzie uzamykanie vôbec nepodporujú. Ak používate prístup file://, potom je samozrejme potrebné aktualizovať iba vášho klienta.

Tri významy Zamknutia

V tejto časti a takmer všade v tejto knihe slová zámok a zamykanie opisujú mechanizmus vzájomného vylúčenia medzi používateľmi, aby sa zabránilo kolíziám odovzdaní. Bohužiaľ, existujú ďalšie dva druhy zámku s ktorými sa Subversion a teda aj táto kniha, niekedy potrebuje zaoberať.

Druhým je príkaz zamknúť pracovnú kópiu, interne používaný programom Subversion na zabránenie kolízie medzi viacerými klientmi Subversion pracujúcimi na rovnakej pracovnej kópii. Tieto zámky sa zvyčajne zobrazia vždy, keď dôjde k prerušeniu z dôvodu chyby príkazu ako obnoviť/odovzdať/... Tieto zámky je možné odstrániť spustením príkazu vyčistenia pracovnej kópie, ako je opísané v časti “Vyčistiť” .

Tretím je, že sa súbory a priečinky sa môžu uzamknúť, ak ich používa iný proces, napríklad ak máte v programe Word otvorený dokument vo formáte Word, tento súbor je uzamknutý a TortoiseSVN k nim nemá prístup.

Všeobecne môžete na tieto ďalšie druhy zámkov zabudnúť, kým sa neudeje niečo, čo si vyžaduje, aby ste sa o ne postarali. V tejto knihe zámok znamená prvý druh, pokiaľ to nie je inak zrejmé z kontextu alebo to nie je výslovne uvedené.

Ako zamykanie funguje v Subversion

V predvolenom nastavení nie je nič zamknuté a ktokoľvek, kto má prístup na odovzdanie, môže kedykoľvek vykonať zmeny v ľubovoľnom súbore. Ostatní budú pravidelne aktualizovať svoje pracovné kópie a zmeny v úložisku sa zlúčia s miestnymi zmenami.

Ak Získate zámok súboru, potom ho môžete odovzdať iba vy. Odovzdania všetkých ostatných používateľov budú blokované, kým zámok neuvoľníte. Zamknutý súbor nemožno v úložisku nijako upravovať, takže ho nemožno vymazať ani premenovať, okrem vlastníka zámku.

Dôležité

Zámok nie je priradený konkrétnemu užívateľovi, ale konkrétnemu užívateľovi a pracovnej kópii. Uzamknutie v jednej pracovnej kópii tiež zabráni tomu istému užívateľovi odovzdanie uzamknutého súboru z inej pracovnej kópie.

Ako príklad si predstavte, že používateľ Jon má na svojom PC pracovnú kópiu. Tam začne pracovať na obrázku a preto získa zámok daného súboru. Keď odchádza zo svojej kancelárie, ešte s tým súborom neskončil, takže ten zámok neuvoľní. Doma má Jon tiež pracovnú kópiu a rozhodne sa na projekte trochu viac popracovať. Ten istý obrazový súbor však nemôže upraviť ani odovzdať, pretože zámok pre tento súbor sa nachádza v jeho pracovnej kópii v kancelárii.

Ostatní používatelia však nemusia nevyhnutne vedieť, že ste obsadili zámok. Pokiaľ stav zámku pravidelne nekontrolujú, najskôr sa o tom dozvedia, keď zlyhá ich odovzdanie, čo nie je vo väčšine prípadov veľmi vhodné. Na uľahčenie správy zámkov existuje nová vlastnosť Subversion svn:needs-lock. Keď je táto vlastnosť nastavená (na ľubovoľnú hodnotu) v súbore, pri každej rezervácii alebo aktualizácii súboru sa z miestnej kópie vytvorí iba na čítanie pokiaľ pracovná kópia obsahuje zámok súboru. Toto slúži ako varovanie, že by ste tento súbor nemali upravovať, pokiaľ ste predtým nezískali zámok. Súbory sú verziové a iba na čítanie sú v TortoiseSVN označené špeciálnym prekrytím, čo naznačuje, že pred úpravou musíte získať zámok.

Zámky sa zaznamenávajú podľa umiestnenia pracovnej kópie aj podľa vlastníka. Ak máte niekoľko pracovných kópií (doma, v práci), môžete zabrať iba jeden zámok týchto pracovných kópií.

Ak niekto z vašich spolupracovníkov získa zámok a potom odíde na dovolenku bez toho, aby ho uvoľnil, čo urobíte? Subversion poskytuje prostriedky na vynútenie uzamknutia. Uvoľnenie zámku, ktorý drží niekto iný, sa označuje ako prelomenie zámku a násilné získanie zámku, ktorý už drží niekto iný, sa označuje ako ukradnutie zámku. Prirodzene to nie sú veci, ktoré by ste mali robiť ľahkovážne, ak chcete zostať priateľmi so svojimi spolupracovníkmi.

Zámky sa zaznamenávajú v úložisku a vo vašej miestnej pracovnej kópii sa vytvorí značka zámku. Ak dôjde k nezrovnalosti, napríklad ak niekto iný prelomil zámok, značka miestneho zámku sa stane neplatnou. Úložisko je vždy definitívnym odkazom.

Získanie zámku

Vyberte súbory vo svojej pracovnej kópii, pre ktoré chcete získať zámok, a potom vyberte príkaz TortoiseSVNZískať zámok....

Obrázok 4.57. Dialóg Zamykanie

Dialóg Zamykanie


Zobrazí sa dialógové okno, ktoré vám umožní zadať komentár, aby ostatní videli, prečo ste súbor uzamkli. Komentár je voliteľný a v súčasnosti sa používa iba s archívmi založenými na Svnserve. Ak (a len ak) potrebujete ukradnúť zámok niekomu inému, zaškrtnite Ukradnúť zámok a potom kliknite na OK .

Môžete nastaviť vlastnosť projektu tsvn:logtemplatelock tak, aby poskytovala užívateľom šablóny správy na vyplnenie ako uzamknutú správu. Pokyny na nastavenie vlastností sú časti “Nastavenia Projektu”.

Ak vyberiete priečinok a potom použijete TortoiseSVNZískať zámok... dialógové okno uzamknutia otvorí každý súbor v každom podpriečinku vybraného na uzamknutie. Ak chcete skutočne uzamknúť celú hierarchiu, je to spôsob, ako to urobiť, ale mohli by ste sa stať veľmi nepopulárnymi u vašich spolupracovníkov, ak by ste ich vylúčili z celého projektu. Používajte to opatrne...

Uvoľnenie zámku

Aby ste nezabudli uvoľniť zámok, ktorý už nepotrebujete, uzamknuté súbory sa zobrazia v dialógovom okne odovzdania a predvolene sa vyberú. Ak budete pokračovať v odovzdávaní, zámky, ktoré máte na vybratých súboroch, sa odstránia, aj keď súbory neboli upravené. Ak nechcete uvoľniť zámok pre určité súbory, môžete ich zaškrtnutie zrušiť (ak nie sú upravené). Ak si chcete ponechať zámok nad súborom, ktorý ste upravili, musíte povoliť zaškrtávacie políčko Uchovať zámky pred vykonaním zmien.

Ak chcete zámok uvoľniť manuálne, vyberte v pracovnej kópii súbory, pre ktoré chcete zámok uvoľniť, a potom vyberte príkaz TortoiseSVNUvoľniť zámok. Nie je už čo zadávať, takže TortoiseSVN kontaktuje úložisko a uvoľní zámky. Tento príkaz môžete tiež použiť v priečinku na rekurzívne uvoľnenie všetkých zámkov.

Kontrola stavu zámku

Obrázok 4.58. Dialógové okno Kontrola zmien

Dialógové okno Kontrola zmien


Pre pozretie zabratia zámku vami alebo inými, môžete použiť TortoiseSVNKontrola úprav.... Lokálne držané značky zámku sa zobrazia okamžite. Ak chcete skontrolovať zámky, ktoré držia iní (a zistiť, či nie sú niektoré z vašich zámkov prelomené alebo ukradnuté), musíte kliknúť na Skontrolovať úložisko.

Z kontextovej ponuky môžete tiež získať a uvoľniť zámky, ako aj prelomiť a ukradnúť zámky držané inými.

Zabrániť prelomeniu a krádeži zámkov

Ak prelomíte alebo ukradnete zámok niekoho iného bez toho, aby ste to nepovedali, môžete potenciálne spôsobiť stratu práce. Ak pracujete s nezlúčiteľnými typmi súborov a ukradnete zámok niekoho iného, po uvoľnení zámku bude môcť skontrolovať svoje zmeny a prepísať tie vaše. Subversion nestráca údaje, ale stratíte tímovú ochranu, ktorú vám poskytlo uzamknutie.

Vytváranie nezamknutých súborov iba na čítanie

Ako už bolo spomenuté vyššie, najefektívnejším spôsobom použitia zamknutia je nastavenie vlastnosti svn:needs-lock na súboroch. Pokyny na nastavenie vlastností sú v časti “Nastavenia Projektu”. Súbory s týmto nastavením vlastnosti budú vždy kontrolované a aktualizované so nastavením príznaku iba na čítanie, pokiaľ vaša pracovná kópia neobsahuje zámok.

Pripomíname, že TortoiseSVN to označuje špeciálnym prekrytím.

Ak uplatňujete politiku, pri ktorej musí byť každý súbor uzamknutý, môže byť jednoduchšie použiť funkciu automatických rekvizít Subversion na automatické nastavenie vlastnosti vždy, keď pridáte nové súbory. Pre ďalšie informácie si prečítajte časť “Automatické nastavenie vlastnosti”.

Skripty háku Zamknutia

Keď vytvoríte nové úložisko so Subversion 1.2 alebo vyšším, v priečinku úložiska hooks sa vytvoria štyri šablóny háku. Nazývajú sa pred a po získaní zámku a pred a po uvoľnení zámku.

Je dobrý nápad nainštalovať skripty háku pred zamknutím a po odomknutí na serveri, ktorý odošle e-mail s oznámením o zamknutom súbore. Po zavedení takého skriptu môžu byť všetci vaši používatelia upozornení, ak niekto uzamkne/odomkne súbor. Nájdete ukážkový skript háku v priečinku hooks/post-lock.tmpl vo vašom úložisku.

Môžete tiež použiť háky na zakázanie prelomenia alebo ukradnutie zámkov, alebo ich môžete obmedziť na menovaného správcu. Prípadne môžete vlastníkovi poslať e-mail, keď je jeden z jeho zámkov prelomený alebo ukradnutý.

Ak sa chcete dozvedieť viac prečítajte si časť “Skripty háku na strane servera”.

TortoiseSVN homepage