Spajanje

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 grananje i stapanje radi u Subverziji pre no se počne njihovo korišćenje, jer to može postati sasvim kompleksno. Veoma je preporučljivo da pročitate poglavlje Branching and Merging u Subverzionoj knjizi, što daje pun opis i puno primera kako ih koristiti.

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 TortoiseSVNStopi....

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.

Stopi opseg revizija

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.

Šta pitate Subverziju da uadi je Izračunajte neophodne izmene da dobijete [OD] revizije 1 grane A [KA] reviziji 7 grane A, i primenite ove izmene u mojoj radnoj kopiji (debla ili grane B).

Ako ostavite revizioni opseg praznim Subverzija koristi stapanje-praćenje mogućnosti da izračina korektan revizioni opseg za korišćenje. Ovo je poznato kao reintegrisanje ili automatsko stapanje.

Stopi dva različita stabla

Ovo je mnogo opštiji slučaj reintegracionog metoda. Šta pitate Subverziju da radi je: Izračunajte neophodne izmene da dobijete [OD] glavna revizija debla [KA] glavna revizija grane, i primenite ove izmene u mojoj radnoj kopiji (debla). Net rezultat je da deblo sada izgleda tačno kao grana.

Ako vaš server/spremište ne podržava praćenje stapanja onda je ovo jedini način da se grane stope nazad u deblo. Drugi slučaj korišćenja javlja se koristeći prodajne grane i potrebno je stopiti izmene prateći novi prodajni izdanak u vašem kodu debla. Za više informacija pročitajte poglavlje vendor branches u Subverzionoj knjizi.

Spajanje opsega revizija

Slika 4.55. Čarobnjak soajanja - Izbor opsega revizija

Čarobnjak soajanja - Izbor opsega revizija


U Od: polju unesite pun folder 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.

Ako stapate iz preimenovanih ili obrisanih grana morate da se vratite nazad na reviziju gde te grane još postoje. U tom slučaju potrebno vam je da specificirate tu reviziju kao peg reviziju u opsegu revizija koje se stapaju (vidi dole) u drugačijem slučaju stapanje neće proći kada ne može da nađe putanju u GLAVNOJ.

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.

Ako vam je potrebno da specificirate peg reviziju za stapanje, dodajte peg reviziju na kraj revizija, npr.5-7,[email protected]. U gornjem primeru, revizije 5,6,7 i 10 će biti stopljene, sa 3 koja je peg revizija.

Važno

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 delovima, metod prikazan u Subverzijinoj knjizi daje va stapanje 100-200 ovog puta i 200-300 sledeći put. Sa TortoiseSVN možete stapati 100-200 ovoaj put i 201-300 sledeći put.

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 Prikaži Dnevnik, 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 podrazumevani Shift-modifikator). Kliknite na OK 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 Prikaži Dnevnik 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.

Kada se koristi praćenje stapanja, dijalog dnevnkaće prikazati prethodno stopljenu reviziju i revizije predatirane od zajedničke predačke tačke, npr. pre nego je grana kopirana kao posivela. Čekboks Sakri nestopljive revizije omogućava vam da kompletno filtrirate revizije tako da vidite revizije koje mogu biti stopljene.

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 obnavljanja.

Ako ostavite opseg revizija praznim ili imate radio dugme sve revizije čekirano onda Subverzija stapa sve revizije koje još nisu stopljene. Ovo je poznato kao reintegrisanje ili automatsko stapanje.

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 obnovljene 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.

Kliknite Sledeći i idite na odeljak pod imenom „Opcije spajanja“.

Spajanje dva različita stabla

Slika 4.56. Čarobnjak spajanja - Spajanje stabla

Čarobnjak spajanja - Spajanje stabla


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 folder 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 folder 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 Prikaži Dnevnik da izaberete reviziju.

Opcije spajanja

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.

Većinu vremena želite da stapanje uzme u obzir istoriju fajla tako da te izmene relativne zajedničkom pretku su stopljene. Ponekad će va možda trebati da stopite fajlove koji su možda povezane ali nisu u spremištu. Na primer možete imati uvezene verzije 1 i 2 iz biblioteke trećeg lica u dva odvojena direktorijuma. Takođe oni su logički povezani, Subverzija nema saznanje o tome jer ona vidi samo crnu kutiju koju ste uvezli. Ako pokušate da stopite razlike između ova dva stabla videćete potpuno uklanjanje koje prati potpuno dodavanje. Da se učini da Subverzija koristi samo razlike bazirane na razlikama putanje pre nego razlike bazirane na istoriji, proverite Ignore ancestry boks. Pročitajte više o ovim stvarima 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 izmene koje se stapaju.

Čekboks označen Forsiraj stapanje se koristi da se izbegne konflikt stabla gde dolazeće brisanje utiče na fajl koji je izmenjen lokalno ili uopšte nije verzionisan. Ako je fajl obrisan onda nema načina da sevrati,zbog čega ova opcija nije čekirana podrazumevano.

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 Stopi dugme. Ako želite da pregledate rezultat Testiraj Stapanje omogućava operaciju stapanja, ali ne modifikuje radnu kopiju uopšte. To prikazuje listu fajlova koji će biti izmenjeni stvarnim stapanjem, i notira te površine gde se konflikti mogu javiti. Pošto praćenje stapanja čini proces stapanja nešto komplikovanijim, nema garantovanog načina da se unapred nađe da li će se stapanje završiti bez konflikta, tako će fajlovi označeni u test stapanju mogu se u stavari stopiti bez problema.

Dijalog napredovanja stapanja prikazuje svako stanje stapanja sa revizionim opsezima koji su obuhvaćeni. Ovo može pokazati jednu reviziju više nego što očekujete. Na primer ako pitate da stopite reviziju 123 dijalog napredovanja će izvestiti Stapanje revizija 122 do 123 . Da biste razumeli ovo morate se setiti da je Stapanje u relaciji sa Diff. Proces stapanja radi generišući listu razlika između tačaka u spremištu i primenjujući razlike u vašoj radnoj kopiji. Dijalog napredovanja jednostavno prikazuje početak i kraj tačaka za diff.

Pregled rezultata spajanja

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.

Savet

Kadgod se revizije stapaju u radnoj kopiji, TortoiseSVN generiše dnevnik poruku iz svih stopljenih revizija. One su dostupne preko Skorašnje poruke dugmeta u dijalogu urezivanja.

Da podesite te generisane poruke postavite odgovarajuće osobine projekta u vašoj radnoj kopiji. Vidi odeljak pod imenom „Stopi dnevnik poruke obrazac“

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.

Savet

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.

Važno

Subverzija ne može stopiti fajl sa folderom 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 folder URL za stapanje.

Praćenje Spajanja

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 u Subverziji Merge tracking documentation.

Rukovanje konfliktima posle stapanja

Važno

Tekst u dijalogu rešenja konflikta dat je SVN bibliotekom i možda još nije preveden kao TortoiseSVN dijalog. Izvinite zbog toga.

Stapanje ne ide uvek glatko. Ponekad postoji konflikt. TortoiseSVN vam pomaže kroz ovaj proces prikazivanjem dijaloga konflikta stapanja.

Slika 4.57. Dijalog konflikta stapanja

Dijalog konflikta stapanja


Tako da se neke izmene stope glatko, dok druge lokalne izmene su u konfliktu sa izmenama koje su već urezane u spremištu. Sve izmene koje mogu biti stopljene su stopljene. Dijalog konflikta stapanja daje vam različite načine rukovanja linijama koje su u konfliktu.

Za normalan konflikt koji se desi tokom izmena u sadržaju ili osobinama, dijalog prikazuje dugmiće koji vam omogućavaju da izaberete koji deo konflikta će te zadržati ili odbaciti.

Odgoditi

Ne radite sa konfliktom sada. Neka stapanje nastavi i reši konflikt kada se stapanje završi.

Prihvati osnovu

Ovo ostavlja fajl kakav je bio, bez izmena koje su došle od stapanja ili izmena koje ste uradili u radnoj kopiji.

Prihvati dolazeće

Ovo odbacuje sve vaše lokalne izmene i koristi fajl kako je stigao iz izvora stapanja.

Odbaci dolazeće

Ovo odbacuje sve izmene iz izvora stapanja i ostavlja fajl sa vašim lokalnim uređenjem.

Prihvati dolazeće za konflikte

Ovo odbacuje vaše lokalne izmene koje su u konfliktu sa izmenama iz izvora stapanja. Ali ostavlja vaše lokalne izmene koje nisu u konfliktu.

Odbaci konflikt

Ovo odbacuje izmene iz izvora stapanja koji su u konfliktu sa vašim lokalnim izmenama. Ali čuva sve izmene koje nisu u konfliktu sa vašim lokalnim izmenama.

Markiraj kao rešeno

Markiraj konflikt kao rešen. Ovo dugme je onemogućeno sve dok se ne upotrebi dugme Uredi da se uredi konflikt ručno i sačuvaju te izmene nazad u fajl. Kada su sačuvane izmene dugme postaje omogućeno.

Uredi

Pokreće uređivač stapanja da možete rešiti konflikt ručno. Ne zaboravite da sačuvate fajl tako da dugme Markiraj kao rešeno postane omogućeno.

Ako postoji stablo konflikta, molimo da najpre pogledate odeljak pod imenom „Konflikti Stabla“ o različitim vrstama konflitnih stabala i kako i začto se dešavaju.

Da se reši stablo konflikta posle stapanja dijalog je prikazan sa različitim opcijama kako rešiti konflikt:

Slika 4.58. Dijalog konfliktnog stabla stapanja

Dijalog konfliktnog stabla stapanja


Otkad postoje različite mogućnosti situacija konfliktnih stabala dijalog će prikazati dugmiće da reše ovo u zavisnosti od specifičnih konflikata. Tekst dugmića i labele objašnjavaju koje opcije su za rešavanje konflikata. Ako niste sigurni ili odustanite od dijaloga ili koristite Postpone dugme da rešite konflikt kasnije.

Osobina održavanja grane

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.

Drugi (brzi) način stapanja svih izmena iz debla u buduće grane je korišćenjem TortoiseSVNStopi sve... iz proširenog kontekst menija (drži pritisnut Shift dugme dok desno kliknete na fajl).

Slika 4.59. Stopi-sve dijalog

Stopi-sve dijalog


Ovaj dijalog je veoma jednostavan. Sve što imate je da podesite opcije za stapanje, kao što je opisano u odeljak pod imenom „Opcije spajanja“. Ostalo je dato u TortoiseSVN praćenje stapanja.