Git
Chapters ▾ 2nd Edition

3.4 Гранање у програму Гит - Процеси рада са гранањем

Процеси рада са гранањем

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

Дуготрајне гране

Пошто програм Гит користи просто троструко спајање, у општем случају спајање једне гране у другу више пута током дужег временског периода не представља неки проблем. То значи да можете имати неколико грана које су увек отворене и које користите за различите етапе развојног циклуса; можете редовно да спајате неке од њих у остале.

Многи Гит програмери користе овакав начин рада, односно имају кôд који је у потпуности стабилан у master грани — то је вероватно и једини кôд који је раније био објављен, или који ће се уопште и објављивати у будућности. Имају остале паралелне гране које се зову develop или next у којима раде или које користе за тестирање стабилности — тако кôд не мора увек да буде стабилан, али кадгод дође у стабилно стање, може да се споји са master граном. Користе се да се у њих повуку тематске гране (које немају дуги животни век попут оне iss53 коју смо користили раније) када буду спремне, како би се потврдило да пролазе све неопходне тестове и да не уводе нове багове.

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

Линеарни поглед на гранање које се ослања на технику прогресивне стабилности
Слика 26. Линеарни поглед на гранање које се ослања на технику прогресивне стабилности

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

„Силос” поглед на гранање које се ослања на технику прогресивне стабилности
Слика 27. „Силос” поглед на гранање које се ослања на технику прогресивне стабилности

Ово можете наставити да радите за неколико нивоа стабилности. Неки већи пројекти имају и грану proposed или pu (proposed updates) која интегрише гране које још увек нису спремне да се преместе у next или master грану. Идеја је да се гране налазе на разним нивоима стабилности; када досегну стабилнији ниво, спајају се у грану изнад њих. Ипак, постојање више дуготрајних грана није неопходно, мада је често од користи, поготово када се ради о веома великим или сложеним пројектима.

Тематске гране

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

Видели сте ово у преходном одељку са iss53 и hotfix гранама које сте направили. Одрадили сте неколико комитова у њима и обрисали сте их непосредно након спајања у главну грану. Ова техника омогућава да брзо и потпуно мењате контекст у коме радите — пошто је рад подељен у силосе где све промене у једној грани имају везе само са том темом, приликом каснијег прегледа је лакше видети шта се десило са кодом. Промене можете ту да задржите минутима, данима или месецима, па их спојите када буду спремне, без обзира на редослед у којем су креиране и у којем је рађено на њима.

Размотрите пример где радите неки посао (у master грани), разгранате се на тикет (iss91), неко време радите на томе, разгранате још једну грану у којој пробате да решите исту ствар на други начин (iss91v2), враћате се назад на master грану у којој радите још неко време, а онда одатле правите грану у којој радите неке ствари за које нисте сигурни да су добра идеја (грана dumbidea). Ваша историја комитова ће изгледати овако некако:

Више тематских грана
Слика 28. Више тематских грана

Рецимо да сада одлучите да вам се друго решење проблема више свиђа (iss91v2), а када својим сарадницима покажете dumbidea грану, испостави се да је идеја заправо била генијална. Можете да одбаците оригиналну iss91 грану (чиме губите комитове c5 и c6) и спајате друге две. Историја сада изгледа овако:

Историја након спајања грана `dumbidea` и `iss91v2`
Слика 29. Историја након спајања грана dumbidea и iss91v2

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

Битно је запамтити да су гране потпуно локалне док радите све ово. Док правите гранате и спајате их, све што радите се дешава само у вашем Гит репозиторијуму - не постоји никакав вид комуникације са сервером.