Tamo gde se grane koriste da održavaju odvojene linije razvoja, u nekim stanjima vi ćete želeti da stopite izmene napravljene na grani nazad u deblo, ili obratno.
Važno je razumeti kako grane i stapanje rade na Subverziji pre početka njihovog korišćenja, jer može biti sasvim kompleksno. Jako se preporučuje da pročitate poglavlje Branching and Merging u Subverzionoj knjizi, koja daje pun opis i mnogo primera kak se korist.
Sledeća tačka za notiranje je tda to stapanje uvek nalazi mesto u okviru radne kopije. Ako želite da stopite izmene u granu, imate da uzmete radnu kopiju za preuzimanje grane, i pozovete čarobnjak stapanja iz radne kopije koristeći → .
Generalno je to dobra ideja da se izvrši stapanje u neizmenjenu radnu kopiju. Ako ste uradili druge izmene u vašoj RK, urežite ih najpre. Ako stapanje ne ide kako ste očekivali, morate vratiti izmene i Vrati komanda će poništiti sve izmene uključujući bilo koje urađene pre stapanja.
Postoje tri često korišćena slučaja za stapanje koji su podržani u blago različitom načinu, kako je opisano dole. Prva strana čarobnjaka stapanja vas pita da izaberete metod koji vam treba.
Metoda se koristi u slučaju kad ste napravili jednu ili više revizija u grani (ili glavnoj grani) i želite preneti te izmene u neku drugu granu.
Kako pitate Subverziju da to uradi: „Izračunati izmene neophodne da uzmete [OD] revizije 1 grane A [DO] revizije 7 grane A, primenite ove izmene u mojoj radnoj kopiji (deblo ili grana B).“
Ovaj metod pokriva slučaj kada ste uradili posebnu granu što je razmatrano u Subverzionoj knjizi. Sve izmene debla su provedena u posebnoj grani, nedelja po nedelju, i sada je posebnost kompletno ono što želite da stopite nazad u deblo. Pošto hoćete da zadržite posebnu granu sinhroniziranu sa deblom, zadnja verzija grane i debla će biti apsolutno identične osim za vaše izmene grane.
Ovo je specijalni slučaj stapanja stabla opisan dole, i on zahteva samo URL da stopi (normalno) vašu granu razvoja. Koristi praćenje stapanja osobinu Subverzije da izračuna ispravni revizioni opseg za korišćenje, i omogućava dodatnu proveru koja omogućava da je ta grana potpuno ažurirana izmenom debla. Ovo omogućava da vi ne poništite grškom rad koji su drugi urezali u deblo od vaše zadnje sihronizovane izmene.
Posle stapanja, cela grana razvoja je kompletno stopljena nazad u glavnu razvojnu liniju. Grana je sada nekorisna i može biti obrisana.
Kada jednom izvršite reintegraciju stapanja nećete nastaviti da ga koristite za razvoj. Rezon za ovo je to da ako pokušate da resinhronizujete vašu postojeću granu iz debla kasnije, praćenje stapanja će pogledati vašu reintegraciju kao izmenu debla koje još nije stopljeno u granu, i pokušaće da stopi granu-u-deblo stapanje nazad u granu! Rešenje ovome je jednostavno da se kreira nova grana iz debla da se nastavi sledeća faza vašeg razvoja.
Ovo je mnogo opštiji slučaj reintegracionog metoda. Ono što pitate Subverziju da to uradi je: „Izračunajte izmene neophodne da dobijete [OD] glavne revizije debla [DO]glavne revizije grane,i primeniti te izmen na moju radnu kopiju (debla).“ čist rezultat je to deblo sada izgleda tačno kao grana.
Ako vaš server/spremište ne podržava stapanje-praćenje onda je ovo jedini način da se stopi grana nazad u deblo. Sledeći slučaj korišćenja se javlja kada koristite prodajne grane i potrebno vam je da stopite izmene koje prate novi prodajni pad u vaš kod debla.Za više informacija pročitajte poglavlje vendor branches u Subverzionoj kljizi.
U Od: polju unesite pun imenik URL grane ili oznake koji sadrži izmene koje želite da prenesete u radnu kopiju. Možete kliknuti da pretražite spremište i nađete željenu granu. Ako ste stopili iz ove grane ranije, sada samo koristite padajuću listu koja prikazuje istoriju prethodno korišćenih URLova.
U Revizioni opseg za stapanje polju unesite listu revizija koje želite da stopite. Ovo može biti pojedinačna revizija, lista specifičnih revizija odvojenih zapetama, ili opseg revizija odvojenih crticom, ili kombinacija svega.
Postoji važna razlika u načinu kako je specificiran opseg revizija sa TortoiseSVN poređena sa klijentom komandne linije. Najlakši način da se vizualizuje to je da se misli o ogradi sa zidom i ogradi panelom.
Sa klijentom komandne linije vi specificirate izmene za stapanje koristeći dva „ograda sa zidom“ revizija koja specificira pre i posle tačaka.
Sa TortoiseSVN vi specificirate izmenljivskup da se stopi koristeći „ograda panelima“. Razlog za ovo postaje čista kada koristite dnevnik dijalog da specificirate revizije za stapanje, gde se svaka revizija pojavljuje kao izmenljivskup.
Ako stapate revizije u kriškama, prikazan metod u subverzionoj knjizi će stopiti 100-200 sada i 200-300 posle. Sa TortoiseSVN stopićete 100-200 sada i 201-300 posle.
Ove razlike su generisale mnogo udara na mejling liste. Mi saznajemo to da ima razlike sa klijentom komandne linije, ali verujemo da većina GUI korisnika lakše razume metodu koju smo implementirali.
Najlakši način da se izabere opseg revizija koje su vam potrebne je da se klikne na , koji će izlistati skore promene sa njihovim komentarima dnevnika. AAko želite da stopite izmene iz pojedinačne revizije samo kliknite na tu reviziju. Ako želite da stopite izmene iz više revizija, onda izaberite taj opseg (koristeći uobičajeni Shift-modifikator). Kliknite na i lista revizionih brojeva za stapanje će biti napunjena za vas.
Ako želite da stopite izmene nazad van vaše radne kopije, da vratite izmene koje su već urezane, izaberite reviziju za vraćanje i budite sigurni da je Inverzno stapanje boks čekiran.
Ako ste već stopili neke izmene iz ove grane, puni nade vi ćete napraviti zapažanje o zadnjoj reviziji stopljenoj u dnevnik poruci kada urezujete izmene. U ovom slučaju, možete koristiti za Radnu Kopiju da bi pratili dnevnik poruku.Setite se da mislimo na revizije kao izmenjene skupove, treba da Koristite reviziju posle krajnje tačke zadnjeg stapanja kao početnu tačku za ovo stapanje. Na primer, ako ste stopili revizije 37 do 39 poslednji put, tada je početna tačka za ovo stapanje revizija 40.
Ako koristite praćenje stapanja osobinu Subverzije, ne treba vam da pamtite koje revizije su već stopljene - Subverzija beleži to za vas. Ako ostavite revizioni opseg praznim, sve revizije koje još niste stopili biće uključene. Pročitajte odeljak pod imenom „Praćenje Spajanja“ da nađete više o tome.
Ako drugi ljudi možda urezuju izmene budite pažljivi pri korišćenju GLAVNE revizije. Ona možda ne ukazuje na reviziju na koju vi mislite ako još neko urezuje posle vašeg zadnjeg ažuriranja.
Kliknite i idite na odeljak pod imenom „Opcije spajanja“
Da stopite posebnu granu nazad u deblo morate početi čarobnjak stapanja unutar radne kopije debla.
U Iz URL: polja unesite pun imenik URL grane koju želite da stopite nazad. Možete takođe kliknuti da pretražite spremište.
Postoje neki uslovi koji dovode do reintegrisanja stapanja. Najpre, server mora da podržava stapanja praćenje. Radna kopija mora biti eskonačne dubine (bez praznog preuzimanja), i ne sme imati bilo kakvu lokalnu izmenu, prebačene stavke ili stavke koje su ažurirane na reviziju različitu od GLAVNE. Sve izmene debla urađene u toku razvoja grane moraju biti stopljene kroz granu (ili označene da su stopljene). Opseg revizija za stapanje biće izračunat automatski.
Ako koristite ovaj metod da stopite posebnu granu nazad u deblo. ptreno vam je da počnete čarobnjak stapanja unutar radne kopije debla.
U Iz: polju unesite pun imenik URL debla. Ovo možda zvuči loše, ali zapamtite da deblo je početna tačka kojoj želite da dodate izmene grane. Možete takođe kliknuti da pretražite spremište.
U Do: polju unesite pun imenik URL posebne grane.
U oba Od Revizije polju i Do Revizije polju, unesite zadnji revizioni broj u kom dva stabla treba sinhronizovati. Ako ste sigurni da niko još ne urezuje možete koristiti GLAVNU reviziju u oba slučaja. Ako nema šanse da još neko urezuje od te sinhronizacije, koristite specifičan revizioni broj da izbegnete gubljenje skorih urezivanja.
Možete takođe koristiti da izaberete reviziju.
Ova strana čarobnjaka vam dopušta da odredite dodatne opcije, pre početka procesa stapanja. Većinu vrmena vi ste koristili podrazumevano podešavanje.
Morate odrediti dubinu koju ćete koristiti za stapanje, npr. koliko daleko u radnu kopiju stapanje ide. Korišćenje termina dubina opisano je u odeljak pod imenom „Preuzimanje dubina“. Podrazumevana dubina je Radna kopija, koja koristi postojeće podešavanje dubine, i skoro uvek je ono što želite.
Najviše vremena vi želite da stapanje uzme u obzir istoriju fajla, tako da izmene relativne zajedničkom prethodniku su stopljene. Ponekad vam je potrebno da stopite fajlove koji možda zavise, ali nisu u vašem spremištu. Na primer možda ste uvezli verzije 1 i 2 biblioteke trećeg lica u dva odvojena imenika.Takođe, oni su logički zavisni, Subverzija nema znanja o tome jer samo vidi loptu koju unesete. Ako pokušate da stopite razlike ta dva stabla videćete kompletno uklanjanje kome sledi kompletno dodavanje. Da učinite da Subverzija koristi samo zasnovane na putanji razlike pre nego istorijski-zasnovane razlike, čekirajte Zanemari poreklo boks. Pročitajte više o ovome u Subverzionoj knjizi, Noticing or Ignoring Ancestry
Možete odrediti način rukovanja sa završetkom linija i izmenama beline. Ove opcije su opisane u odeljak pod imenom „Kraj-reda i Belina Opcije“. Podrazumevano ponašanje je da se tretiraju sve beline i kraj-linije razlike kao stvarne izmen koje se stapaju.
Ako koristite stapanja praćenje i želite da označite reviziju da je stopljena, bez stvarnog stapanja ovde, čekirajte Samo obeležite stapanje čekboks. Postoje dva moguća razloga koja možete želeti da ovo uradite. Može biti da je stapanje jako komplikovano za algoritam stapanja, onda ćete uraditi izmene ručno, zatim markirate izmene kao stopljene da bi stapanja praćenje algoritam bio upoznat sa tim. Ili možete želeti da predupredite posebne revizije da budu stopljene. Označavajuči ih već stopljenim predupređujete pojavu stapanja pomoću stopi-tragač-upoznat klijentima.
Sada je sve podešeno, sve što imate da uradite je da kliknete na dugme. Ako želite da pregledate rezultat <guibuttone>Testiraj Stapanje omogune modifikuje radnu kopiju uop</guibuttone>
Stapanje progres dijalog prikazuje svako stanje stapanja, sa revizionim opsezima uključenim. To može indicirati jednu više reviziju nego što ste očekivali. Na primer, ako tražite da stopite reviziju 123 dijalog napredovanja pokazuje „Stapanje revizija122 do 123“. Da shvatite ovo potrebno je da se setite da je Stapanje blisko zavisno sa Diff. Proces stapanja radi generišući listu razlika između dve tačke u spremištu, i primenjuje te razlike na radnu kopiju. Dijalog napredovanja jednostavno prikazuje početnu i krajnju tačku za diff.
Stapanje je sada kompletno. Dobra je ideja da se pogleda na stapanje i vidi da li je kako se očekivalo. Stapanje je obično sasvim kompletno. Konflikti često nastaju ako je grana pomerena daleko od debla.
Za Subverzione klijente i servere pre 1.5, nisu stopi informacije uskladištene i stopljene revizije su praćene ručno. Kada ste testirali izmene i došli do urezivanja ove revizije, vaš dnevnik poruka urezivanja treba uvek da obuhvati revizione brojeve koji su preneti u stapanju. Ako želite da primenite sledeće stapanje kasnije potrebno vam je da znate šta ste već stopili, jer ne želite da prenesete izmene više nego jednom. Za više informacija o tome pogledajte Best Practices for Merging u Subverzijinoj knjizi.
Ako vaš server i svi klijenti rade Subverziju 1.5 ili višu, praćenje stapanja mogućnost će zabeležiti revizije stoljene i izostaviti revizije koje su stopljene više od jedanput. Ovo čini vaš život mnogo jednostavnijim kao kad jednostavno stopite celi revizioni opseg svaki put i znate da samo nova revizija će stvarno biti stopljena.
Upravljanje granama je važno. Ako želite da držite ovu granu ažurnom sa deblom, treba da budete sigurni da stapate često tako da grana i deblo ne odu suviše daleko. Naravno, potrebno je još uvek izbegavati ponavljanje stapanja izmena, kako je objašnjeno gore.
Ako ste upravo stopili posebnu granu nazad u deblo, deblo sada sadrži sve nove posebne kodove, i grana je nepotrebna. Možete je sada obrisati iz spremišta ako je potrebno.
Subverzija ne može stopiti fajl sa imenikom i obratno - samo imenici sa imenicima i fajlovi sa fajlovima. Ako kliknete na fajl i otvorite dijalog stapanja, zatim možete zadati putanju do fajla u dijalogu. Ako izaberete i pokrenete dijalog morate specificirati imenik URL za stapanje.
Subverzija 1.5 uvodi mogućnost za praćenje stapanja. Kada se vaše stapanje menja sa jednog stabla na drugo, revizioni brojevi stopljeni su uskladišteni i ta informacija može biti korišćena za više različitih svrha.
Možete izbeći opasnost od stapanja iste revizije dvaput (problem ponavljanja stapanja). Kada je jednom revizija označena da je stopljena, buduća stapanja koja uključuju tu reviziju u svom opsegu preskočiće je.
Kada stopite granu nazad u deblo, dnevnik dijalog može prikazati urezivanje grane kao deo deblovog dnevnika, dajući bolju preglednost izmena.
Kada prikažete dnevnik dijalog u okviru stapanja dijaloga, revizije već stopljene su prikazane sivo.
Kada se prikazuju invormacije okrivljavanja za fajl, možete izabrati da prikažete originalnog autora stopljene revizije, pre nego osobu koja je uradila stapanje.
Možete obeležiti reviziju kao ne stapaj uključujući je u listu stopljenih revizija bez stvarnog stapanja.
Praćenje stapanja informacija je uskladištena u svn:mergeinfo osobini klijenta kada on izvrši stapanje. Kada je stapanje urezano server uskladišti tu informaciju u bazi podataka, i kada zahtevate stapanje, dnevnik ili okrivljavanje informacije, server može odgovoriti odgovarajuće. Za sistem koji radi ispravno morate omogućiti takav server, spremište i svi klijenti su dograđeni. Raniji klijenti neće uskladištiti svn:mergeinfo osobinu i raniji serveri neće obezbediti informacije koje traže novi klijenti.
Nađite više o praćenju stapanja iz Subverzione Merge tracking documentation.
Stapanje uvek ne ide ravno. Ponekad ima konflikta, i ako stapate više opsega vi generalno želite da rešite konflikt pre početka stapanja sledećeg opsega. TortoiseSVN vam pomaže kroz ovaj proces prikazivanjem povratni konflikt stapanja dijalog.
Kada se konflikt pojavi u toku stapanja imate tri načina da ga opslužite.
Možete odlučiti da su vaše lokalne izmene mnogo važne, tako vi želite da izbacite verziju iz spremišta i sačuvate lokalnu verziju. Ili želite da odbacite lokalne izmene kao uslugu verziji spremišta. U svakom slučaju nema pokušaja da se uradi stapanje izmena . izaberite jedno ili drugo.
Normalno vi ćete želeti da pogledate konflikt i da ga rešite. U tom slučaju, izaberite koji će pokrenuti vaš alat stapanja. Kada ste zadovoljni rezultatom kliknite na .
Poslednja opcija je odlaganje rešavanja i nastaviti stapanje. Možete izabrati da uradite to za tekuće fajlove u konfliktu, ili za fajlove u ostatku stapanja. Kakogod, ako ima daljih izmena u tom fajlu neće biti moguće kompletirati stapanje.
Ako ne želite da koristite interaktivan povratni poziv postoji čekboks u progres dijalogu stapanja Stopi ne-interaktivno. Ako je ovo odabrano za stapanje i stapanje prouzrokuje konflikt, fajl je markiran da je u konfliktu i stapanje se nastavlja. Vi ćete rešiti konflikt posle svršetka ukupnog stapanja. Ako nije podešeno onda pre nego se fajl markira kao konfliktan dobijate šansu da rešite konflikt tokom stapanja.Ovo ima prednost ako fajl dobije višestruka spajanja (višestruke revizije primenjuju izmene tog fajl), sukcesivna stapanja se mogu nastaviti u zavisnosti na koje linije se odnosi. Ali svakako ne možete šetati okolo po kafu dok stapanje radi ;)
Ako želite stopiti sve izmene posebne grane nazad u deblo tada možete koristiti → iz proširenog kontekst menija (drži Shift taster dok desno kliknete na fajl).
Ovaj dijalog je veoma lak. Sve što imate da uradite je da podesite opcije za stapanje kako je opisano odeljak pod imenom „Opcije spajanja“. preostalo je dato sa TortoiseSVN automatski koristeći praćenje stapanja.
Kada razvijate nove osobine na izdvojenoj grani dobra je ideja da se radi plan reintegracije kda osobina bude kompletna. Ako ostali rad na deblu u isto vreme može se ispostaviti da su razlike postale značajne posle nekog vremena i stapanje nazad postaje noćna mora.
Ako je osobina relativno jednostavna i razvoj nije bio dug možete prihvatiti jednostavan pristup, koji drži celu granu izdvojenu dok se osobina ne kompletira, zatim se stapa izmena grane nazad u deblo. U čarobnjaku stapanja to će biti jednostavno Stopi opseg revizija, sa opsegom revizija koji je revizioni opseg grane.
Ako osobina uzima mnogo vremena i treba vam račun za izmene u deblu, potrbno je da zadržite sinhronizaciju grane. To jednostavno znači da periodično stapate izmene debla u granu, tako da grana sadrži sve izmene debla plus nove osobine. Proces sinhronizacije koristi Stopi opseg revizija. Kada je osobina kompletna možete je stopiti nazad na deblo koristeći ili Reintegriši granu ili Stopi dva različita stabla.