Спајање

Тамо где се гране користе да одржавају одвојене линије развоја, у неким стањима ви ћете желети да стопите измене направљене на грани назад у дебло, или обратно.

Важно је разумети како гранање и стапање ради у Субверзији пре но се почне њихово коришћење, јер то може постати сасвим комплексно. Веома је препоручљиво да прочитате поглавље Branching and Merging у Субверзионој књизи, што даје пун опис и пуно примера како их користити.

Следећа тачка за нотирање је тда то стапање увек налази место у оквиру радне копије. Ако желите да стопите измене у грану, имате да узмете радну копију за преузимање гране, и позовете чаробњак стапања из радне копије користећи ТортоисеСВНСтопи....

Генерално је то добра идеја да се изврши стапање у неизмењену радну копију. Ако сте урадили друге измене у вашој РК, урежите их најпре. Ако стапање не иде како сте очекивали, морате вратити измене и Врати команда ће поништити све измене укључујући било које урађене пре стапања.

Постоје три често коришћена случаја за стапање који су подржани у благо различитом начину, како је описано доле. Прва страна чаробњака стапања вас пита да изаберете метод који вам треба.

Стопи опсег ревизија

Метода се користи у случају кад сте направили једну или више ревизија у грани (или главној грани) и желите пренети те измене у неку другу грану.

Шта питате Субверзију да уади је Израчунајте неопходне измене да добијете [ОД] ревизије 1 гране A [КА] ревизији 7 гране A, и примените ове измене у мојој радној копији (дебла или гране B).

Ако оставите ревизиони опсег празним Субверзија користи стапање-праћење могућности да израчина коректан ревизиони опсег за коришћење. Ово је познато као реинтегрисање или аутоматско стапање.

Стопи два различита стабла

Ово је много општији случај реинтеграционог метода. Шта питате Субверзију да ради је: Израчунајте неопходне измене да добијете [ОД] главна ревизија дебла [КА] главна ревизија гране, и примените ове измене у мојој радној копији (дебла). Нет резултат је да дебло сада изгледа тачно као грана.

Ако ваш сервер/спремиште не подржава праћење стапања онда је ово једини начин да се гране стопе назад у дебло. Други случај коришћења јавља се користећи продајне гране и потребно је стопити измене пратећи нови продајни изданак у вашем коду дебла. За више информација прочитајте поглавље vendor branches у Субверзионој књизи.

Спајање опсега ревизија

Слика 4.55. Чаробњак соајања - Избор опсега ревизија

Чаробњак соајања - Избор опсега ревизија


У Од: пољу унесите пун фолдер УРЛ гране или ознаке који садржи измене које желите да пренесете у радну копију. Можете кликнути ... да претражите спремиште и нађете жељену грану. Ако сте стопили из ове гране раније, сада само користите падајућу листу која приказује историју претходно коришћених УРЛова.

Ако стапате из преименованих или обрисаних грана морате да се вратите назад на ревизију где те гране још постоје. У том случају потребно вам је да специфицирате ту ревизију као пег ревизију у опсегу ревизија које се стапају (види доле) у другачијем случају стапање неће проћи када не може да нађе путању у ГЛАВНОЈ.

У Ревизиони опсег за стапање пољу унесите листу ревизија које желите да стопите. Ово може бити појединачна ревизија, листа специфичних ревизија одвојених запетама, или опсег ревизија одвојених цртицом, или комбинација свега.

Ако вам је потребно да специфицирате пег ревизију за стапање, додајте пег ревизију на крај ревизија, нпр.5-7,[email protected]. У горњем примеру, ревизије 5,6,7 и 10 ће бити стопљене, са 3 која је пег ревизија.

Важно

Постоји важна разлика у начину како је специфициран опсег ревизија са ТортоисеСВН поређена са клијентом командне линије. Најлакши начин да се визуализује то је да се мисли о огради са зидом и огради панелом.

Са клијентом командне линије ви специфицирате измене за стапање користећи два ограда са зидом ревизија која специфицира пре и после тачака.

Са ТортоисеСВН ви специфицирате изменљивскуп да се стопи користећи ограда панелима. Разлог за ово постаје чиста када користите дневник дијалог да специфицирате ревизије за стапање, где се свака ревизија појављује као изменљивскуп.

Ако стапате ревизије у деловима, метод приказан у Субверзијиној књизи даје ва стапање 100-200 овог пута и 200-300 следећи пут. Са ТортоисеСВН можете стапати 100-200 овоај пут и 201-300 следећи пут.

Ове разлике су генерисале много удара на мејлинг листе. Ми сазнајемо то да има разлике са клијентом командне линије, али верујемо да већина ГУИ корисника лакше разуме методу коју смо имплементирали.

Најлакши начин да се изабере опсег ревизија које су вам потребне је да се кликне на Прикажи Дневник, који ће излистати скоре промене са њиховим коментарима дневника. ААко желите да стопите измене из појединачне ревизије само кликните на ту ревизију. Ако желите да стопите измене из више ревизија, онда изаберите тај опсег (користећи подразумевани Shift-модификатор). Кликните на OK и листа ревизионих бројева за стапање ће бити напуњена за вас.

Ако желите да стопите измене назад ван ваше радне копије, да вратите измене које су већ урезане, изаберите ревизију за враћање и будите сигурни да је Инверзно стапање бокс чекиран.

Ако сте већ стопили неке измене из ове гране, пуни наде ви ћете направити запажање о задњој ревизији стопљеној у дневник поруци када урезујете измене. У овом случају, можете користити Прикажи Дневник за Радну Копију да би пратили дневник поруку.Сетите се да мислимо на ревизије као измењене скупове, треба да Користите ревизију после крајње тачке задњег стапања као почетну тачку за ово стапање. На пример, ако сте стопили ревизије 37 до 39 последњи пут, тада је почетна тачка за ово стапање ревизија 40.

Ако користите праћење стапања особину Субверзије, не треба вам да памтите које ревизије су већ стопљене - Субверзија бележи то за вас. Ако оставите ревизиони опсег празним, све ревизије које још нисте стопили биће укључене. Прочитајте одељак под именом „Праћење Спајања“ да нађете више о томе.

Када се користи праћење стапања, дијалог дневнкаће приказати претходно стопљену ревизију и ревизије предатиране од заједничке предачке тачке, нпр. пре него је грана копирана као посивела. Чекбокс Сакри нестопљиве ревизије омогућава вам да комплетно филтрирате ревизије тако да видите ревизије које могу бити стопљене.

Ако други људи можда урезују измене будите пажљиви при коришћењу ГЛАВНЕ ревизије. Она можда не указује на ревизију на коју ви мислите ако још неко урезује после вашег задњег обнављања.

Ако оставите опсег ревизија празним или имате радио дугме све ревизије чекирано онда Субверзија стапа све ревизије које још нису стопљене. Ово је познато као реинтегрисање или аутоматско стапање.

Постоје неки услови који доводе до реинтегрисања стапања. Најпре, сервер мора да подржава стапања праћење. Радна копија мора бити есконачне дубине (без празног преузимања), и не сме имати било какву локалну измену, пребачене ставке или ставке које су обновљене на ревизију различиту од ГЛАВНЕ. Све измене дебла урађене у току развоја гране морају бити стопљене кроз грану (или означене да су стопљене). Опсег ревизија за стапање биће израчунат аутоматски.

Кликните Следећи и идите на одељак под именом „Опције спајања“.

Спајање два различита стабла

Слика 4.56. Чаробњак спајања - Спајање стабла

Чаробњак спајања - Спајање стабла


Ако користите овај метод да стопите посебну грану назад у дебло. птрено вам је да почнете чаробњак стапања унутар радне копије дебла.

У Из: пољу унесите пун фолдер УРЛ дебла. Ово можда звучи лоше, али запамтите да дебло је почетна тачка којој желите да додате измене гране. Можете такође кликнути ... да претражите спремиште.

У До: пољу унесите пун фолдер УРЛ посебне гране.

У оба Од Ревизије пољу и До Ревизије пољу, унесите задњи ревизиони број у ком два стабла треба синхронизовати. Ако сте сигурни да нико још не урезује можете користити ГЛАВНУ ревизију у оба случаја. Ако нема шансе да још неко урезује од те синхронизације, користите специфичан ревизиони број да избегнете губљење скорих урезивања.

Можете такође користити Прикажи Дневник да изаберете ревизију.

Опције спајања

Ова страна чаробњака вам допушта да одредите додатне опције, пре почетка процеса стапања. Већину врмена ви сте користили подразумевано подешавање.

Морате одредити дубину коју ћете користити за стапање, нпр. колико далеко у радну копију стапање иде. Коришћење термина дубина описано је у одељак под именом „Преузимање дубина“. Подразумевана дубина је Радна копија, која користи постојеће подешавање дубине, и скоро увек је оно што желите.

Већину времена желите да стапање узме у обзир историју фајла тако да те измене релативне заједничком претку су стопљене. Понекад ће ва можда требати да стопите фајлове који су можда повезане али нису у спремишту. На пример можете имати увезене верзије 1 и 2 из библиотеке трећег лица у два одвојена директоријума. Такође они су логички повезани, Субверзија нема сазнање о томе јер она види само црну кутију коју сте увезли. Ако покушате да стопите разлике између ова два стабла видећете потпуно уклањање које прати потпуно додавање. Да се учини да Субверзија користи само разлике базиране на разликама путање пре него разлике базиране на историји, проверите Ignore ancestry бокс. Прочитајте више о овим стварима у Субверзионој књизи Noticing or Ignoring Ancestry.

Можете одредити начин руковања са завршетком линија и изменама белине. Ове опције су описане у одељак под именом „Крај-реда и Белина Опције“. подразумевано понашање је да се третирају све белине и крај-линије разлике као стварне измене које се стапају.

Чекбокс означен Форсирај стапање се користи да се избегне конфликт стабла где долазеће брисање утиче на фајл који је измењен локално или уопште није верзионисан. Ако је фајл обрисан онда нема начина да севрати,због чега ова опција није чекирана подразумевано.

Ако користите стапања праћење и желите да означите ревизију да је стопљена, без стварног стапања овде, чекирајте Само обележите стапање чекбокс. Постоје два могућа разлога која можете желети да ово урадите. Може бити да је стапање јако компликовано за алгоритам стапања, онда ћете урадити измене ручно, затим маркирате измене као стопљене да би стапања праћење алгоритам био упознат са тим. Или можете желети да предупредите посебне ревизије да буду стопљене. Означавајучи их већ стопљеним предупређујете појаву стапања помоћу стопи-трагач-упознат клијентима.

Сада је све подешено, све што имате да урадите је да кликнете на Стопи дугме. Ако желите да прегледате резултат Тестирај Стапање омогућава операцију стапања, али не модификује радну копију уопште. То приказује листу фајлова који ће бити измењени стварним стапањем, и нотира те површине где се конфликти могу јавити. Пошто праћење стапања чини процес стапања нешто компликованијим, нема гарантованог начина да се унапред нађе да ли ће се стапање завршити без конфликта, тако ће фајлови означени у тест стапању могу се у ставари стопити без проблема.

Дијалог напредовања стапања приказује свако стање стапања са ревизионим опсезима који су обухваћени. Ово може показати једну ревизију више него што очекујете. На пример ако питате да стопите ревизију 123 дијалог напредовања ће известити Стапање ревизија 122 до 123 . Да бисте разумели ово морате се сетити да је Стапање у релацији са Дифф. Процес стапања ради генеришући листу разлика између тачака у спремишту и примењујући разлике у вашој радној копији. Дијалог напредовања једноставно приказује почетак и крај тачака за дифф.

Преглед резултата спајања

Стапање је сада комплетно. Добра је идеја да се погледа на стапање и види да ли је како се очекивало. Стапање је обично сасвим комплетно. Конфликти често настају ако је грана померена далеко од дебла.

Савет

Кадгод се ревизије стапају у радној копији, ТортоисеСВН генерише дневник поруку из свих стопљених ревизија. Оне су доступне преко Скорашње поруке дугмета у дијалогу урезивања.

Да подесите те генерисане поруке поставите одговарајуће особине пројекта у вашој радној копији. Види одељак под именом „Стопи дневник поруке образац“

За Субверзионе клијенте и сервере пре 1.5, нису стопи информације ускладиштене и стопљене ревизије су праћене ручно. Када сте тестирали измене и дошли до урезивања ове ревизије, ваш дневник порука урезивања треба увек да обухвати ревизионе бројеве који су пренети у стапању. Ако желите да примените следеће стапање касније потребно вам је да знате шта сте већ стопили, јер не желите да пренесете измене више него једном. За више информација о томе погледајте Best Practices for Merging у Субверзијиној књизи.

Ако ваш сервер и сви клијенти раде Субверзију 1.5 или вишу, праћење стапања могућност ће забележити ревизије стољене и изоставити ревизије које су стопљене више од једанпут. Ово чини ваш живот много једноставнијим као кад једноставно стопите цели ревизиони опсег сваки пут и знате да само нова ревизија ће стварно бити стопљена.

Управљање гранама је важно. Ако желите да држите ову грану ажурном са деблом, треба да будете сигурни да стапате често тако да грана и дебло не оду сувише далеко. Наравно, потребно је још увек избегавати понављање стапања измена, како је објашњено горе.

Савет

Ако сте управо стопили посебну грану назад у дебло, дебло сада садржи све нове посебне кодове, и грана је непотребна. Можете је сада обрисати из спремишта ако је потребно.

Важно

Субверзија не може стопити фајл са фолдером и обратно - само именици са именицима и фајлови са фајловима. Ако кликнете на фајл и отворите дијалог стапања, затим можете задати путању до фајла у дијалогу. Ако изаберете и покренете дијалог морате специфицирати фолдер УРЛ за стапање.

Праћење Спајања

Субверзија 1.5 уводи могућност за праћење стапања. Када се ваше стапање мења са једног стабла на друго, ревизиони бројеви стопљени су ускладиштени и та информација може бити коришћена за више различитих сврха.

  • Можете избећи опасност од стапања исте ревизије двапут (проблем понављања стапања). Када је једном ревизија означена да је стопљена, будућа стапања која укључују ту ревизију у свом опсегу прескочиће је.

  • Када стопите грану назад у дебло, дневник дијалог може приказати урезивање гране као део дебловог дневника, дајући бољу прегледност измена.

  • Када прикажете дневник дијалог у оквиру стапања дијалога, ревизије већ стопљене су приказане сиво.

  • Када се приказују инвормације окривљавања за фајл, можете изабрати да прикажете оригиналног аутора стопљене ревизије, пре него особу која је урадила стапање.

  • Можете обележити ревизију као не стапај укључујући је у листу стопљених ревизија без стварног стапања.

Праћење стапања информација је ускладиштена у svn:mergeinfo особини клијента када он изврши стапање. Када је стапање урезано сервер ускладишти ту информацију у бази података, и када захтевате стапање, дневник или окривљавање информације, сервер може одговорити одговарајуће. За систем који ради исправно морате омогућити такав сервер, спремиште и сви клијенти су дограђени. Ранији клијенти неће ускладиштити svn:mergeinfo особину и ранији сервери неће обезбедити информације које траже нови клијенти.

Нађите више о праћењу стапања у Субверзији Merge tracking documentation.

Руковање конфликтима после стапања

Важно

Текст у дијалогу решења конфликта дат је СВН библиотеком и можда још није преведен као ТортоисеСВН дијалог. Извините због тога.

Стапање не иде увек глатко. Понекад постоји конфликт. ТортоисеСВН вам помаже кроз овај процес приказивањем дијалога конфликта стапања.

Слика 4.57. Дијалог конфликта стапања

Дијалог конфликта стапања


Тако да се неке измене стопе глатко, док друге локалне измене су у конфликту са изменама које су већ урезане у спремишту. Све измене које могу бити стопљене су стопљене. Дијалог конфликта стапања даје вам различите начине руковања линијама које су у конфликту.

За нормалан конфликт који се деси током измена у садржају или особинама, дијалог приказује дугмиће који вам омогућавају да изаберете који део конфликта ће те задржати или одбацити.

Одгодити

Не радите са конфликтом сада. Нека стапање настави и реши конфликт када се стапање заврши.

Прихвати основу

Ово оставља фајл какав је био, без измена које су дошле од стапања или измена које сте урадили у радној копији.

Прихвати долазеће

Ово одбацује све ваше локалне измене и користи фајл како је стигао из извора стапања.

Одбаци долазеће

Ово одбацује све измене из извора стапања и оставља фајл са вашим локалним уређењем.

Прихвати долазеће за конфликте

Ово одбацује ваше локалне измене које су у конфликту са изменама из извора стапања. Али оставља ваше локалне измене које нису у конфликту.

Одбаци конфликт

Ово одбацује измене из извора стапања који су у конфликту са вашим локалним изменама. Али чува све измене које нису у конфликту са вашим локалним изменама.

Маркирај као решено

Маркирај конфликт као решен. Ово дугме је онемогућено све док се не употреби дугме Уреди да се уреди конфликт ручно и сачувају те измене назад у фајл. Када су сачуване измене дугме постаје омогућено.

Уреди

Покреће уређивач стапања да можете решити конфликт ручно. Не заборавите да сачувате фајл тако да дугме Маркирај као решено постане омогућено.

Ако постоји стабло конфликта, молимо да најпре погледате одељак под именом „Конфликти Стабла“ о различитим врстама конфлитних стабала и како и зачто се дешавају.

Да се реши стабло конфликта после стапања дијалог је приказан са различитим опцијама како решити конфликт:

Слика 4.58. Дијалог конфликтног стабла стапања

Дијалог конфликтног стабла стапања


Откад постоје различите могућности ситуација конфликтних стабала дијалог ће приказати дугмиће да реше ово у зависности од специфичних конфликата. Текст дугмића и лабеле објашњавају које опције су за решавање конфликата. Ако нисте сигурни или одустаните од дијалога или користите Postpone дугме да решите конфликт касније.

Особина одржавања гране

Када развијате нове особине на издвојеној грани добра је идеја да се ради план реинтеграције кда особина буде комплетна. Ако остали рад на деблу у исто време може се испоставити да су разлике постале значајне после неког времена и стапање назад постаје ноћна мора.

Ако је особина релативно једноставна и развој није био дуг можете прихватити једноставан приступ, који држи целу грану издвојену док се особина не комплетира, затим се стапа измена гране назад у дебло. У чаробњаку стапања то ће бити једноставно Стопи опсег ревизија, са опсегом ревизија који је ревизиони опсег гране.

Ако особина узима много времена и треба вам рачун за измене у деблу, потрбно је да задржите синхронизацију гране. То једноставно значи да периодично стапате измене дебла у грану, тако да грана садржи све измене дебла плус нове особине. Процес синхронизације користи Стопи опсег ревизија. Када је особина комплетна можете је стопити назад на дебло користећи или Реинтегриши грану или Стопи два различита стабла.

Други (брзи) начин стапања свих измена из дебла у будуће гране је коришћењем ТортоисеСВНСтопи све... из проширеног контекст менија (држи притиснут Схифт дугме док десно кликнете на фајл).

Слика 4.59. Стопи-све дијалог

Стопи-све дијалог


Овај дијалог је веома једноставан. Све што имате је да подесите опције за стапање, као што је описано у одељак под именом „Опције спајања“. Остало је дато у ТортоисеСВН праћење стапања.