Grananje/Označavanje

Jedna od osobina sistema kontrole verzija je mogućnost da se izoluju izmene na odvojenoj liniji razvoja. Ova linija je poznata kao grana. Grane se često koriste da se isprobaju nove osobine bez narušavanja glavne linije razvoja sa greškama kompajlera i bagovima. Uskoro kada nove osobine postanu stabilne razvojna grana je stopljena nazad u glavnu granu (deblo).

Druga osobina sistema kontrole verzija je mogućnost da se markira posebna revizija (npr. realizovana verzija), tako da možete u bilo koje vreme ponovo kreirate određenu izradu ili okolinu. Ovaj proces je poznat kao označavanje.

Subverzija nema specijalne komande za grananje i označavanje, ali koristi takozvane jevtine kopije umesto. Jevtine kopije su slične čvrstim vezama na Juniksu, koje znače to da se umesto pravljenja kompletnih kopija u spremištu, interna veza se kreira, ukazujući na specifično stablo/reviziju. Kao rezultat grane i oznake se vrlo brzo kreiraju, i skoro da ne uzimaju dodatni prostor u spremištu.

Kreiranje Grane ili oznaka

Ako ste uvezli vaš projekat sa preporučenom strukturom foldera, kreiranjem grana ili oznaka verzija je veoma jednostavno:

Slika 4.53. Grana/Oznaka dijalog

Grana/Oznaka dijalog


Izaberite folder u vašoj radnoj kopiji koji želite da kopirate u granu ili oznaku, zatim izaberite komandu TortoiseSVNGrana/Oznaka....

Uobičajeni destinacioni URL za novu granu biće izvorni URL na koji je osnovana vaša radna kopija. Potrebno je da uredite taj URL ka novoj putanji za vašu granu/znak. Tako umesto

http://svn.collab.net/repos/ProjectName/trunk
      

možete sada koristiti nešto kao

http://svn.collab.net/repos/ProjectName/tags/Release_1.10
      

Ako ne možete da se setite konvencije imenovanja koju ste koristili poslednji put, kliknite na dugme desno da otvorite pretraživač spremišta tako da možete videti postojeću strukturu spremišta.

intermedijalni folderi

Kada odredite ciljni URL svi folderi do zadnjeg moraju već postojati ili ćete dobiti poruku o grešci. U gornjem primeru, URL http://svn.collab.net/repos/ProjectName/tags/ mora postojati da se kreira Release_1.10 znak.

Međutim, ako želite da kreirate grana/znak u URL koji ima središnje foldere koji još ne postoje morate čekirati opciju Kreirajte središnje foldere na dnu dijaloga. Ako je opcija aktivirana svi središnji folderi se automatski kreiraju.

Primetimo da je ova opcija onemogućena uobičajeno da bi se izbegle greške pri kucanju. Na primer, ako otkucate ciljni URL kao http://svn.collab.net/repos/ProjectName/Tags/Release_1.10 umesto http://svn.collab.net/repos/ProjectName/tags/Release_1.10, dobićete grešku sa onemogućenom opcijom, ali ako je opcija omogućena folder Tags će biti automatski kreiran i završiće se folderom Tags i folderom tags.

Sada imate da izaberete izvor za kopiranje. Ovde imate tri mogućnosti:

GLAVNA revizija u spremištu

Nova grana se kopira direktno u spremište iz GLAVNE revizije. Nikakve podatke ne treba preneti iz vaše radne kopije, i grana se kreira brzo.

Određena revizija u spremištu

Nova grana je kopirana direktno u spremište ali možete izabrati stariju reviziju. Ovo je korisno ako ste zaboravili da uradite oznaku kada ste realizovali vaš projekat prošle nedelje. Ako ne možete zapamtiti revizioni broj kliknite dugme s desne strane da prikažete revizioni dnevnik i izaberite revizioni broj odatle. Ponovo nema podataka koji se prenose iz vaše radne kopije i grana se kreira brzo.

Radna kopija

Nova grana je idntična kopija vaše lokalne radne kopije. Ako ste uskladili neke fajlove sa starijom revizijom u vašoj RK, ili ako ste napravili lokalne izmene, to je tačno ono što ide u kopiju. Prirodno ova vrsta kompleksnih oznaki može obuhvatiti podatke iz vaše RK nazad u spremište ako ona već ne postoji tamo.

Ako želite vašu radnu kopiju da prebacite na novo kreiranu granu automatski, koristite prebaci radnu kopiju na novu granu/oznaku čekboks. Ali ako to uradite, najpre budite sigurni da vaša radna kopija ne sadrži izmene. Ako sadrži, ove promene će biti stopljene u granu RK kada prebacite.

Ako vaša radna kopija ima druge projekte uključene sa svn:externals osobinom, ti eksternali će biti izlistani na dnu dijaloga grana/ѕnak. Za svaki eksternal ciljna putanja i izvorni URL je prikazan.

Ako želite da budete sigurni da je novi znak uvek u konzistentnom stanju proverite sve eksternale da imaju odgovarajuće revizije. Ako ne proverite eksternale i eksternale za GLAVNU reviziju koji se mogu menjati u buduće, izmenom novog znaka će proveriti GLAVNU reviziju eksternala i vaš znak se neće moći kompajlirati. Zato je dobra ideja da se podese eksternali na eksplicitnu reviziju kada se kreira znak.

Eksternali se automatski zakače na neku GLAVNU reviziju radne kopije OSNOVNE revizije u zavisnosti od izvor grana/znak:

Tabela 4.1. Označena revizija

Kopiraj izvorOznačena revizija
GLAVNA revizija u spremištuGLAVNA revizija eksternala
Određena revizija u spremištuGLAVNA revizija eksternala
Radna kopijaRK OSNOVNA revizija eksternala


eksternali unutar eksternala

Ako je projekta uključen kao eksternal koji ima svoj uključen eksternal onda to neće biti označeno! Samo eksternali koji su direktni potomci mogu biti označeni.

Pritisnite OK da urežete novu kopiju u spremište. Ne zaboravite da obezbedite dnevnik poruku. Primetimo da je kopija kreirana unutar spremišta.

Primetimo da osim što ste odlučili da prebacite vašu radnu kopiju na novokreiranu granu, kreiranje Grane ili Oznake ne utiče na vašu radnu kopiju. Čak i ako kreirate granu iz vaše RK, ove izmene su urezane u novu granu, ne u deblo, tako da vaša RK može još uvek biti markirana kao izmenjena sa respektom na deblo.

Drugi način kreiranja grane ili oznake

Možete takođekreiratigranu ili oznaka i ako nemate radnu kopiju. Da to uradite, otvorite pretraživač spremišta.Možete tamo vući foldere u novu lokaciju. Treba da držite Ctrl taster dok vučete da kreirate kopiju, inače će folder biti pomeren, a neće biti kopiran.

Takođemožete vući folder pomoću desnog dugmeta miša.Kadaotpustite dugme miša možete izabrati iz kontekstnog menija gdeželite da pomerite folder ili da ga kopirate. Svakako, da kreirate granu ili oznaku morate kopirati folder, ne pomerati ga.

Još jedan način je iz dijaloga dnevnika. Možete prikazati dijalog dnevnika npr. deblo, izaberite reviziju (ili GLAVNU reviziju na sam vrh ili prethodnu reviziju), desni kliki i izaberite kreirajte granu/oznaku iz revizije...

Preuzeti ili prebaciti...

... to nije (ne realno) pitanje. Dok preuzimanje skida sve iz željene grane u spremištu ka folderu vaše radne kopije, TortoiseSVNPrebaci... samo prenosi izmenjene podatke u vašu radnu kopiju. Dobro za mrežno unošenje, dobro za vaše strpljenje. :-)

Da bi bili sposobni da radite sa sveže generisanom granom ili oznakom imate više načina da rukujete time. Možete:

  • TortoiseSVNPreuzimanje da se uradi sveže preuzimanje u prazan folder. Možete preuzeti bilo koju lokaciju na vašem lokalnom disku i možete kreirati onoliko radnih kopija iz vašeg spremišta koliko želite.

  • Prebacite vašu radnu kopiju u novo kreiranu kopiju spremištu. Opet izaberite vršni nivo folder vašeg projekta i koristite TortoiseSVNPrebaci... iz kontekst menija.

    U sledećem dijalogu unesite URL grane koju ste kreirali. Izaberite Glavna Revizija radio dugme i kliknite na OK. Vaša radna kopija je prebačena na novu granu/oznaku.

    Prebacite rad tek kao Obnova i nikad ne odbaciti vaše lokalne izmene. Bilo koje izmene koje ste uradili u vašoj radnoj kopiji koje još nisu urezane biće stopljene kada uradite Prebacivanje. Ako ne želite da se to desi morate ili urezati izmene pre prebacivanje, ili vratiti vašu radnu kopiju u već-urezanu reviziju (tipčno GLAVNA).

  • Ako želite da radite na deblu i grani, ali ne želite skupo sveže preuzimanje, možete koristiti Vindouz Eksplorer da napravite kopiju vašeg debla u sledći folder, zatim TortoiseSVNPrebaci... zatim kopirajte u novu granu.

Slika 4.54. Prebaci dijalog

Prebaci dijalog


Takođe, sama Subverzija ne pravi razliku između oznaki i grana, način kako se tipično koriste razlikuje se u malom.

  • Oznake se obično koriste da se kreira statička slika projekta u pojedinačnom stanju. Kao takvi se ne koriste normalno pri razvoju - to je zašto postoje grane, koji rezon mi preporučujemo /deblo /grane /oznake strukturu spremišta na prvom mestu. Rad na znak revizijama nije dobra ideja, ali vaši lokalni fajlovi nisu zaštićeni od upisivanja pa nema ništa da vas zaustavi da to uradite greškom. Međutim, ako pokušate da urežete putanju u spremište koja sadrži /oznake/, TortoiseSVN će vas upozoriti.

  • To može biti da je potrebno uaditi dalje izmene za realizaciju koju već označavate. Korektan način rukovanja ovim je kreiranje nove grane od oznaka najpre i urezati granu. Uradite vaše Izmene na ovoj grani i zatim kreirajte novi znak od ove nove grane, npr. Version_1.0.1.

  • Ako izmenite radnu kopiju kreiranu od grane i urežete, zatim sve izmene idu u novu granu i ne u deblo. Samo modifikacije su uskladištene. Ostatak ostaje jeftina kopija.