JavaRush /Java блогу /Random-KY /Башаламандыксыз командалык иш: Гитте тармакташуу стратеги...
Roman Beekeeper
Деңгээл

Башаламандыксыз командалык иш: Гитте тармакташуу стратегияларын түшүнүү

Группада жарыяланган

Киришүү

Git программалык камсыздоону түзүүдө versionны көзөмөлдөө үчүн де-факто өнөр жай стандарты болуп калды. Гит деген эмне жана кантип баштоо керектиги жөнүндө билүү үчүн, адегенде ал жөнүндө менин макаламды окуңуз. Сиз аны окудуңуз беле? Сонун, келгиле уланталы! Башаламандыксыз командалык иш: Гитте тармакташуу стратегияларын талдоо - 1Каалайбызбы, каалабайбызбы, Линус Товалдс жараткан аспап пенсияга чыкпайт. Ошондуктан, бөлүштүрүлгөн командалар gitте кантип иштешет жана бул үчүн кандай тармактык стратегияны тандоо керектиги жөнүндө айтуунун мааниси бар. Ал эми бул жөн эле суроо эмес. Көбүнчө, бири-бири менен кызматташа элек иштеп чыгуучулардын жаңы командасы чогулган кырдаалда, бутактандыруу стратегиясы биринчилерден болуп чечorши керек. Ал эми бир стратегия экинчисине караганда жакшыраак экенин далилдеш үчүн оозунан көбүк чыга турган адамдар болот. Ошондуктан, мен сизге жалпысынан эмнелер жөнүндө маалымат бергим келет.

Тармактык стратегиялар зарылбы?

Бирок алар керек, алар дагы деле керек. Анткени командада бир нерсеге макул болбосоңуз, анда ар ким каалаганын жасайт экен:
  • өзү каалаган бөлүмдө иштөө;
  • ал каалаган башка бутактарына биригүү;
  • кээ бир бутактарды жок кылуу;
  • жаңыларын түзүү;
  • жана башкалар — бригаданын ар бир мучесу контролсуз агымда.
Ошондуктан, төмөндө үч стратегия болуп саналат. Go!

GitHub Flow стратегиясы

Башаламандыксыз командалык иш: Гитада тармакташуу стратегияларын түшүнүү - 2Тармактык стратегия, канчалык таң калыштуу болбосун, GitHub'та артыкчылыктуу :) Ага кармануу керек болгон эрежелердин жыйындысы тиркелет:
  1. Мастер бутагындагы code үзгүлтүксүз жана каалаган убакта жайгаштырууга даяр болушу керек (башкача айтканда, сиз долбоорду курууга жана аны serverде жайылтууга тоскоол боло турган codeду кое албайсыз).
  2. Жаңы функциянын үстүндө иштөөнү пландаганыңызда, башкы бутагынын негизинде жаңы бутагын (функциянын бутагы) түзүп, ага мазмундуу ат беришиңиз керек. Кодуңузду жергorктүү түрдө тапшырыңыз жана өзгөртүүлөрүңүздү дайыма алыскы репозиторийдеги ошол эле фorалга түртүңүз.
  3. Чыгарма даяр экенин жана башкы бутакка бириктирorши мүмкүн деген айкын сезим пайда болгондо (же так эмес болсоңуз, бирок бул боюнча пикир алгыңыз келсе) Pull-Request ачыңыз ( бул жерден тартыңыз-суроо деген эмне экенин окуй аласыз). аткарылган иш).
  4. Тартуу өтүнүчүндөгү жаңы функция бекитилгенден кийин, аны башкы бутакка бириктирсе болот.
  5. Өзгөртүүлөр башкы бутакка бириктирилгенде, алар дароо serverге жайгаштырылышы керек.
GitHub Flow боюнча, жаңы нерсенин үстүндө иштей баштоодон мурун, мейли бул оңдоо же жаңы функция, мастердин негизинде жаңы фorал түзүп, ага ылайыктуу ат бериш керек экен. Андан кийин ишке ашыруу боюнча иш башталат. Сиз дайыма ушундай ат менен алыскы serverге милдеттенмелерди түртүп турушуңуз керек. Баары даяр экенин түшүнгөндө, мастер бутагына тартуу өтүнүчүн түзүшүңүз керек. Андан кийин, жок эле дегенде, бир, же андан да жакшыраак, эки адам бул codeду карап, "Кабыл алуу" баскычын чыкылdateу керек. Адатта, долбоордун командасынын лидери жана башка бирөө аны карашы керек, андан кийин сиз тартуу өтүнүчүн аткара аласыз. GitHub Flow ошондой эле долбоордо үзгүлтүксүз жеткирүү (CD) менен белгилүү . Анткени башкы бутакка өзгөртүүлөр киргизилгенде, алар дароо serverге жайгаштырылышы керек.

GitFlow стратегиясы

Башаламандыксыз командалык иш: Gitте тармакташуу стратегияларын түшүнүү - 3Мурунку стратегия (GitHub Flow) өтө татаал болгон эмес. Бутактардын эки түрү бар: мастер жана өзгөчөлүк бутактары. Бирок GitFlow олуттуураак. Жок дегенде жогорудагы сүрөттөн сиз муну түшүнө аласыз) Демек, бул стратегия кандай иштейт? Жалпысынан алганда, GitFlow эки туруктуу бутактан жана убактылуу бутактардын бир нече түрлөрүнөн турат (GitHub Flow контекстинде башкы бутак туруктуу, калгандары убактылуу). Туруктуу фorалдары:
  • кожоюн: бул бутакка эч ким тийбеши же ал жакка эч нерсе түртпөшү керек. Бул стратегияда мастер өндүрүштө колдонулган эң акыркы туруктуу versionсын көрсөтөт (башкача айтканда, чыныгы serverде);
  • өнүгүү - өнүгүүнүн бутагы. Бул туруксуз болушу мүмкүн.
Иштеп чыгуу үч көмөкчү убактылуу бутактарды колдонуу менен ишке ашырылат :
  1. Функция бутактары - жаңы функцияларды иштеп чыгуу үчүн.
  2. Релиз бутактары - долбоордун жаңы versionсын чыгарууга даярдануу.
  3. Түзөтүү бутактары чыныгы serverде чыныгы колдонуучулар тарабынан табылган кемчorкти тез чечүү.

Өзгөчөлүк бутактары

Функция бутактары жаңы функциялар үчүн иштеп чыгуучулар тарабынан түзүлөт. Алар ар дайым өнүгүү бутагынын негизинде түзүлүшү керек. Жаңы функциянын үстүндө иштөөнү аяктагандан кийин, сиз иштеп чыгуу тармагында тартуу өтүнүчүн түзүшүңүз керек. Чоң командаларда бир эле учурда бир нече өзгөчөлүктөр болушу мүмкүн экени түшүнүктүү. Дагы бир жолу, GitFlow стратегиясынын сүрөттөлүшүнүн башындагы сүрөткө көңүл буруңуз.

Бутактарды чыгарыңыз

Өнүктүрүү тармагында керектүү сандагы жаңы функциялар даярдалганда, сиз буюмдун жаңы versionсын чыгарууга даярдана аласыз. Бул жагынан бизге чыгаруу бөлүмү жардам берет. өнүктүрүү тармагынын негизинде түзүлгөн. Чыгаруу бутагы менен иштеп жатканда, бардык кемчorктерди таап, оңдоо керек. Чыгаруу бутагын турукташтыруу үчүн талап кылынган бардык жаңы өзгөртүүлөр да кайра иштеп чыгууга бириктирorши керек. Бул тармакты турукташтыруу жана өнүктүрүү максатында жасалууда. Сыноочулар бутак жаңы релиз үчүн туруктуу деп айтканда, ал башкы бутакка бириктирилет. Андан кийин, бул милдеттенмеде тег түзүлөт (тег: бул тууралуу кененирээк бул жерден окуй аласыз ), ага version номери ыйгарылат. Мисал катары, стратегиянын башындагы сүрөттү карасаңыз болот. Ошентип, Tag 1.0 бул долбоордун 1.0 versionсын көрсөткөн энбелги. Жана акыркы нерсе - бутагы оңдоо.

Түзөтүү бутактары

Түзөтүү бутактары мастерде жаңы versionны чыгаруу үчүн да арналган. Бир гана айырмасы, бул чыгаруу пландаштырылган эмес. Кемчorктер чыгарылып, өндүрүштө ачылган жагдайлар бар. Мисалы, iOS: алар жаңы versionсын чыгарар замат, сиз дароо чыгарылгандан кийин табылган кемчorктерди оңдоолор менен бир топ жаңыртууларды аласыз. Буга байланыштуу бул кемчorкти тез арада оңдоп, жаңы versionсын чыгаруу зарыл. Биздин сүрөттө бул 1.0.1 versionсына туура келет. Жаңы функциянын үстүндө иштөө чыныгы serverдеги мүчүлүштүктөрдү оңдоо зарыл болгон учурда токтоп калбашы мүмкүн (биз айткандай, “өндүрүштө”: кайрадан англис тorндеги production сөзүнүн көчүрмөсү). Түзөтүү бутагы башкы бутактан түзүлүшү керек, анткени ал өндүрүштө иштеген мамлекетти билдирет. Кемчorктин чечими даяр болоор замат ал мастерге бириктирorп, жаңы этикетка түзүлөт. Чыгаруу бутагын даярдоо сыяктуу эле, оңдоо бутагы өзүнүн чечимин иштеп чыгуу тармагына бириктириши керек.

Forking Workflow стратегиясы

Башаламандыксыз командалык иш: Gitте тармакташуу стратегияларын түшүнүү - 4Forking Workflow стратегиясынын бир бөлүгү катары, иштеп чыгуу эки репозиторий болгон жол менен ишке ашырылат:
  1. Бардык өзгөртүүлөр бириктириле турган баштапкы репозиторий.
  2. Айыр репозиторий (бул түпнускага өзгөртүү киргизгиси келген башка иштеп чыгуучунун карамагындагы түпнуска репозиторийдин көчүрмөсү).
Азырынча бир аз кызыктай угулат, туурабы? Ачык булактуу иштеп чыгууга туш болгондор үчүн бул ыкма мурунтан эле тааныш. Бул стратегия төмөнкүдөй артыкчылыктарды берет: иштеп чыгууну түпнускада биргелешип иштеп чыгууга укуктарды бербестен айры репозиторийде жүргүзүүгө болот. Албетте, баштапкы репозиторийдин ээси сунушталган өзгөртүүлөрдөн баш тартууга укуктуу. Же макул болуп, аларды өлтүр. Бул баштапкы репозиторийдин ээси үчүн да, кандайдыр бир продуктту түзүүгө катышууну каалаган иштеп чыгуучу үчүн да ыңгайлуу. Мисалы, сиз Linux ядросуна өзгөртүүлөрдү сунуштай аласыз . Линус алардын мааниси бар деп чечсе, өзгөртүүлөр кошулат (!!!).

Forking Workflow мисалы

Forking Flow GitHub'да сиз колдоно турган китепкана болгондо колдонулат. Аны толук пайдаланууга тоскоол болгон кемчorги бар. Маселени жетиштүү изилдеп, анын чечүү жолун билдиңиз дейли. Forking Workflow стратегиясын колдонуу менен, сиз бул көйгөйдү түпнуска китепкана репозиторийинде иштөө укугун бербестен чече аласыз. Баштоо үчүн, сиз репозиторийди тандап алышыңыз керек, мисалы, Spring Framework өзөгү .Жогорку оң бурчтан Fork баскычын таап, аны басыңыз: Башаламандыксыз командалык иш: Гитте тармакташуу стратегияларын талдоо - 5Бул бир аз убакытты талап кылат, андан кийин бул баштапкы репозиторийдин көчүрмөсү сиздин терезеңизде пайда болот. жеке эсеп, бул айры экенин көрсөтөт: Башаламандыксыз командалык иш: Гитада тармакташуу стратегияларын түшүнүү - 6Андан кийин сиз бул репозиторий менен кадимкидей иштей аласыз, мастер бутагына өзгөртүүлөрдү кошуп, баары даяр болгондо, баштапкы репозиторийге Pull-Request түзүңүз. Бул үчүн, "Жаңы тартуу өтүнүчү" баскычын чыкылдатыңыз : Башаламандыксыз командалык иш: Gitте тармакташуу стратегияларын түшүнүү - 7

Кайсы стратегияны тандоо керек

Git - бул процесстердин жана стратегиялардын кеңири спектрин колдонуу менен иштөөгө мүмкүндүк берген ийкемдүү жана күчтүү курал. Бирок тандоо канчалык чоң болсо, азыр кайсы стратегияны тандоо ошончолук кыйын болот. Албетте, бардыгына бирдей жооп жок. Мунун баары кырдаалга жараша болот. Бирок, буга жардам бере турган бир нече сунуштар бар:
  1. Алгач эң жөнөкөй стратегияны тандап алганыңыз оң. Керек болгондо гана татаалыраак стратегияларга өтүңүз.
  2. Мүмкүн болушунча азыраак иштеп чыгуучу бутактары бар стратегияларды карап көрүңүз.
  3. Ар кандай стратегиялардын жакшы жана жаман жактарын карап көрүңүз жана долбоорго ылайык туурасын тандаңыз.
Бул мен сизге gitтеги бутактандыруу стратегиясы жөнүндө айткым келди. Көңүл бурганыңыз үчүн рахмат :) Менин GitHub аккаунтума жазылыңыз , мен өзүмдүн жумушумду жумушумда колдонгон ар кандай технологияларда жана куралдарда көп жарыялайм

пайдалуу шилтемелер

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION