Једна од особина система контроле верзија је могућност да се изолују измене на одвојеној линији развоја. Ова линија је позната као грана. Гране се често користе да се испробају нове особине без нарушавања главне линије развоја са грешкама компајлера и баговима. Ускоро када нове особине постану стабилне развојна грана је стопљена назад у главну грану (дебло).
Друга особина система контроле верзија је могућност да се маркира посебна ревизија (нпр. реализована верзија), тако да можете у било које време поново креирате одређену израду или околину. Овај процес је познат као означавање.
Субверзија нема специјалне команде за гранање и означавање, али користи такозване „јевтине копије“ уместо. Јевтине копије су сличне чврстим везама на Јуниксу, које значе то да се уместо прављења комплетних копија у спремишту, интерна веза се креира, указујући на специфично стабло/ревизију. Као резултат гране и ознаке се врло брзо креирају, и скоро да не узимају додатни простор у спремишту.
Ако сте увезли ваш пројекат са препорученом структуром фолдера, креирањем грана или ознака верзија је веома једноставно:
Изаберите фолдер у вашој радној копији који желите да копирате у грану или ознаку, затим изаберите команду → .
Уобичајени дестинациони УРЛ за нову грану биће изворни УРЛ на који је основана ваша радна копија. Потребно је да уредите тај УРЛ ка новој путањи за вашу грану/знак. Тако уместо
http://svn.collab.net/repos/ProjectName/trunk
можете сада користити нешто као
http://svn.collab.net/repos/ProjectName/tags/Release_1.10
Ако не можете да се сетите конвенције именовања коју сте користили последњи пут, кликните на дугме десно да отворите претраживач спремишта тако да можете видети постојећу структуру спремишта.
Када одредите циљни УРЛ сви фолдери до задњег морају већ постојати или ћете добити поруку о грешци. У горњем примеру, УРЛ http://svn.collab.net/repos/ProjectName/tags/
мора постојати да се креира Release_1.10
знак.
Међутим, ако желите да креирате грана/знак у УРЛ који има средишње фолдере који још не постоје морате чекирати опцију Креирајте средишње фолдере
на дну дијалога. Ако је опција активирана сви средишњи фолдери се аутоматски креирају.
Приметимо да је ова опција онемогућена уобичајено да би се избегле грешке при куцању. На пример, ако откуцате циљни УРЛ као http://svn.collab.net/repos/ProjectName/Tags/Release_1.10
уместо http://svn.collab.net/repos/ProjectName/tags/Release_1.10
, добићете грешку са онемогућеном опцијом, али ако је опција омогућена фолдер Tags
ће бити аутоматски креиран и завршиће се фолдером Tags
и фолдером tags
.
Сада имате да изаберете извор за копирање. Овде имате три могућности:
Нова грана се копира директно у спремиште из ГЛАВНЕ ревизије. Никакве податке не треба пренети из ваше радне копије, и грана се креира брзо.
Нова грана је копирана директно у спремиште али можете изабрати старију ревизију. Ово је корисно ако сте заборавили да урадите ознаку када сте реализовали ваш пројекат прошле недеље. Ако не можете запамтити ревизиони број кликните дугме с десне стране да прикажете ревизиони дневник и изаберите ревизиони број одатле. Поново нема података који се преносе из ваше радне копије и грана се креира брзо.
Нова грана је иднтична копија ваше локалне радне копије. Ако сте ускладили неке фајлове са старијом ревизијом у вашој РК, или ако сте направили локалне измене, то је тачно оно што иде у копију. Природно ова врста комплексних ознаки може обухватити податке из ваше РК назад у спремиште ако она већ не постоји тамо.
Ако желите вашу радну копију да пребаците на ново креирану грану аутоматски, користите пребаци радну копију на нову грану/ознаку чекбокс. Али ако то урадите, најпре будите сигурни да ваша радна копија не садржи измене. Ако садржи, ове промене ће бити стопљене у грану РК када пребаците.
Ако ваша радна копија има друге пројекте укључене са svn:externals
особином, ти екстернали ће бити излистани на дну дијалога грана/ѕнак. За сваки екстернал циљна путања и изворни УРЛ је приказан.
Ако желите да будете сигурни да је нови знак увек у конзистентном стању проверите све екстернале да имају одговарајуће ревизије. Ако не проверите екстернале и екстернале за ГЛАВНУ ревизију који се могу мењати у будуће, изменом новог знака ће проверити ГЛАВНУ ревизију екстернала и ваш знак се неће моћи компајлирати. Зато је добра идеја да се подесе екстернали на експлицитну ревизију када се креира знак.
Екстернали се аутоматски закаче на неку ГЛАВНУ ревизију радне копије ОСНОВНЕ ревизије у зависности од извор грана/знак:
Табела 4.1. Означена ревизија
Копирај извор | Означена ревизија |
---|---|
ГЛАВНА ревизија у спремишту | ГЛАВНА ревизија екстернала |
Одређена ревизија у спремишту | ГЛАВНА ревизија екстернала |
Радна копија | РК ОСНОВНА ревизија екстернала |
Ако је пројекта укључен као екстернал који има свој укључен екстернал онда то неће бити означено! Само екстернали који су директни потомци могу бити означени.
Притисните унутар спремишта.
да урежете нову копију у спремиште. Не заборавите да обезбедите дневник поруку. Приметимо да је копија креиранаПриметимо да осим што сте одлучили да пребаците вашу радну копију на новокреирану грану, креирање Гране или Ознаке не утиче на вашу радну копију. Чак и ако креирате грану из ваше РК, ове измене су урезане у нову грану, не у дебло, тако да ваша РК може још увек бити маркирана као измењена са респектом на дебло.
Можете такођекреиратиграну или ознака и ако немате радну копију. Да то урадите, отворите претраживач спремишта.Можете тамо вући фолдере у нову локацију. Треба да држите Цтрл тастер док вучете да креирате копију, иначе ће фолдер бити померен, а неће бити копиран.
Такођеможете вући фолдер помоћу десног дугмета миша.Кадаотпустите дугме миша можете изабрати из контекстног менија гдежелите да померите фолдер или да га копирате. Свакако, да креирате грану или ознаку морате копирати фолдер, не померати га.
Још један начин је из дијалога дневника. Можете приказати дијалог дневника нпр. дебло, изаберите ревизију (или ГЛАВНУ ревизију на сам врх или претходну ревизију), десни клики и изаберите
... то није (не реално) питање. Док преузимање скида све из жељене гране у спремишту ка фолдеру ваше радне копије,
→ само преноси измењене податке у вашу радну копију. Добро за мрежно уношење, добро за ваше стрпљење. :-)Да би били способни да радите са свеже генерисаном граном или ознаком имате више начина да рукујете тиме. Можете:
→ да се уради свеже преузимање у празан фолдер. Можете преузети било коју локацију на вашем локалном диску и можете креирати онолико радних копија из вашег спремишта колико желите.
Пребаците вашу радну копију у ново креирану копију спремишту. Опет изаберите вршни ниво фолдер вашег пројекта и користите
→ из контекст менија.У следећем дијалогу унесите УРЛ гране коју сте креирали. Изаберите Главна Ревизија радио дугме и кликните на . Ваша радна копија је пребачена на нову грану/ознаку.
Пребаците рад тек као Обнова и никад не одбацити ваше локалне измене. Било које измене које сте урадили у вашој радној копији које још нису урезане биће стопљене када урадите Пребацивање. Ако не желите да се то деси морате или урезати измене пре пребацивање, или вратити вашу радну копију у већ-урезану ревизију (типчно ГЛАВНА).
Ако желите да радите на деблу и грани, али не желите скупо свеже преузимање, можете користити Виндоуз Експлорер да направите копију вашег дебла у следћи фолдер, затим
→ затим копирајте у нову грану.Такође, сама Субверзија не прави разлику између ознаки и грана, начин како се типично користе разликује се у малом.
Ознаке се обично користе да се креира статичка слика пројекта у појединачном стању. Као такви се не користе нормално при развоју - то је зашто постоје гране, који резон ми препоручујемо /дебло /гране /ознаке
структуру спремишта на првом месту. Рад на знак ревизијама није добра идеја, али ваши локални фајлови нису заштићени од уписивања па нема ништа да вас заустави да то урадите грешком. Међутим, ако покушате да урежете путању у спремиште која садржи /ознаке/
, ТортоисеСВН ће вас упозорити.
То може бити да је потребно уадити даље измене за реализацију коју већ означавате. Коректан начин руковања овим је креирање нове гране од ознака најпре и урезати грану. Урадите ваше Измене на овој грани и затим креирајте нови знак од ове нове гране, нпр. Version_1.0.1
.
Ако измените радну копију креирану од гране и урежете, затим све измене иду у нову грану и не у дебло. Само модификације су ускладиштене. Остатак остаје јефтина копија.