JavaRush /Блоги Java /Random-TG /Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои ...
Roman Beekeeper
Сатҳи

Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои филиалҳо дар Git

Дар гурӯҳ нашр шудааст

Муқаддима

Git ба стандарти саноатӣ барои идоракунии version дар эҷоди нармафзор табдил ёфтааст. Барои фаҳмидани он, ки git чист ва чӣ гуна оғоз кардан лозим аст, аввал мақолаи маро дар бораи он хонед. Шумо онро хондаед? Аҷаб, биёед идома диҳем! Кори дастаҷамъона бидуни нофаҳмиҳо: таҳлor стратегияҳои шоха дар Git - 1Мехоҳед ё не, асбобе, ки Линус Товалдс офаридааст, ба истеъфо нахоҳад рафт. Аз ин рӯ, дар бораи он ки чӣ гуна дастаҳои тақсимшуда дар git кор мекунанд ва барои ин кадом стратегияи фorалро интихоб кардан лозим аст, гуфтан маъно дорад. Ва ин асло саволи бехуда нест. Аксар вақт, дар вазъияте, ки як гурӯҳи нави таҳиягарон, ки бо ҳамдигар ҳамкорӣ накардаанд, ҷамъ карда мешаванд, стратегияи шохасозӣ яке аз аввалин чизҳоест, ки бояд тасмим гирифта шавад. Ва одамоне пайдо мешаванд, ки кафк аз даҳон мебароянд, то исбот кунанд, ки як стратегия аз дигараш беҳтар аст. Аз ин рӯ, ман мехоҳам ба шумо маълумот диҳам, ки онҳо умуман чӣ гунаанд.

Оё стратегияҳои фorалҳо заруранд?

Аммо онҳо лозиманд ва ҳоло ҳам лозиманд. Зеро агар шумо дар бораи чизе дар даста розӣ набошед, маълум мешавад, ки ҳама он чизеро, ки мехоҳанд, иҷро мекунанд:
  • дар фorале, ки ӯ мехоҳад, кор кунад;
  • ба шохаҳои дигаре, ки мехоҳад, ҳамроҳ шавад;
  • нест кардани баъзе фorалҳо;
  • нав эҷод кунед;
  • ва гайра — хар як аъзои бригада дар чараёни беназорат аст.
Аз ин рӯ, дар зер се стратегия мавҷуданд. Бирав!

Стратегияи GitHub Flow

Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои фorалҳо дар Гита - 2Стратегияи шохасозӣ, новобаста аз он ки он то чӣ андоза аҷиб аст, дар GitHub афзалтар аст :) Ба он маҷмӯи қоидаҳо замима карда шудаанд , ки бояд риоя карда шаванд:
  1. Рамз дар шохаи асосӣ бояд шикаста бошад ва дар вақти дилхоҳ барои ҷойгиршавӣ омода бошад (яъне шумо наметавонед codeеро дар он ҷо ҷойгир кунед, ки шуморо аз сохтани лоиҳа ва ҷойгиркунии он дар server бозмедорад).
  2. Вақте ки шумо нақшаи кор карданро дар бораи функсияҳои нав ба нақша гирифтаед, шумо бояд дар асоси шохаи асосӣ фorали нав (шохаи хусусият) эҷод кунед ва ба он номи пурмазмун диҳед. Рамзи худро ба таври маҳаллӣ иҷро кунед ва тағиротҳои худро мунтазам ба ҳамон фorал дар як анбори дурдаст интиқол диҳед.
  3. Вақте ки эҳсоси возеҳе вуҷуд дорад, ки кор омода аст ва онро ба фorали асосӣ муттаҳид кардан мумкин аст (ё агар шумо мутмаин набошед, аммо мехоҳед, ки дар ин ҷо фикру мулоҳиза гиред) -ро кушоед (шумо метавонед дар ин ҷо хонед ). кори ичрошуда).
  4. Пас аз тасдиқи як хусусияти нав дар дархости кашидан, онро метавон ба фorали асосӣ муттаҳид кард.
  5. Вақте ки тағирот ба фorали асосӣ якҷоя карда мешаванд, онҳо бояд фавран ба server ҷойгир карда шаванд.
Мувофиқи GitHub Flow, маълум мешавад, ки пеш аз оғози кор дар чизи нав, хоҳ ислоҳ ё хусусияти нав, шумо бояд як фorали навро дар асоси устод эҷод кунед ва ба он номи мувофиқ диҳед. Минбаъд, кор оид ба татбиқи он оғоз меёбад. Шумо бояд пайваста ӯҳдадориҳоро ба serverи дурдаст бо ҳамон ном тела диҳед. Вақте ки шумо фаҳмед, ки ҳама чиз омода аст, шумо бояд дар фorали усто дархости кашидан эҷод кунед. Пас, ҳадди аққал як, ё беҳтараш, ду нафар бояд ин codeро бубинанд ва Тасдиқро пахш кунанд. Одатан, роҳбари дастаи лоиҳа ва ягон каси дигар бояд ба он назар кунанд, ва он гоҳ шумо метавонед дархости ҷалбро анҷом диҳед. GitHub Flow инчунин бо рондани Continuous Delivery (CD) дар лоиҳа маълум аст. Зеро вақте ки тағирот ба шохаи асосӣ ворид карда мешавад, онҳо бояд фавран ба server ҷойгир карда шаванд.

Стратегияи GitFlow

Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои шохасозӣ дар Git - 3Стратегияи қаблӣ (GitHub Flow) аслан чандон мураккаб набуд. Ду намуди шохаҳо вуҷуд доранд: шохаҳои усто ва хусусият. Аммо GitFlow ҷиддӣтар аст. Ҳадди ақал аз расми боло шумо инро фаҳмида метавонед) Пас, ин стратегия чӣ гуна кор мекунад? Умуман, GitFlow аз ду шохаи доимӣ ва якчанд намуди шохаҳои муваққатӣ иборат аст (Дар заминаи GitHub Flow, шохаи асосӣ доимӣ ва дигарон муваққатӣ мебошанд). Фorалҳои доимӣ:
  • устод: касе набояд ба ин шоха даст занад ва ба он ҷо чизе тела диҳад. Дар ин стратегия, усто versionи охирини устувореро, ки дар истеҳсолот (яъне дар serverи воқеӣ) истифода мешавад, намоиш медиҳад;
  • рушд шохаи рушд аст. Он метавонад ноустувор бошад.
Таҳия бо истифода аз се шохаи муваққатии ёрирасон амалӣ карда мешавад :
  1. Фorалҳои хусусият - барои таҳияи функсияҳои нав.
  2. Фorалҳои озод - барои омодагӣ ба нашри versionи нави лоиҳа.
  3. Фorалҳои Hotfix як ҳалли зуд барои камбудиҳо мебошанд, ки аллакай аз ҷониби корбарони воқеӣ дар serverи воқеӣ пайдо шудаанд.

Фorалҳои хусусият

Шохаҳои хусусият аз ҷониби таҳиягарон барои функсияҳои нав сохта мешаванд. Онҳо бояд ҳамеша дар асоси шохаи рушд эҷод карда шаванд. Пас аз ба итмом расонидани кор дар функсияи нав, шумо бояд дар бахши рушд дархости кашидан эҷод кунед. Маълум аст, ки дар коллективхои калон дар як вакт зиёда аз як шохаи хусусият мавчуд буда метавонад. Бори дигар ба расм дар оғози тавсифи стратегияи GitFlow диққат диҳед.

Фorалҳоро озод кунед

Вақте ки шумораи зарурии хусусиятҳои нав дар бахши рушд омода карда шудаанд, шумо метавонед барои баровардани versionи нави маҳсулот омода шавед. Фorали озодкунӣ дар ин кор ба мо кӯмак мекунад. ки дар асоси сохаи тараккиёт ташкил карда шудааст. Ҳангоми кор бо шохаи релиз, шумо бояд ҳамаи камбудиҳоро пайдо ва ислоҳ кунед. Ҳама гуна тағироти наве, ки барои мӯътадил кардани шохаи релиз талаб карда мешаванд, инчунин бояд ба коркард дубора ҳамроҳ карда шаванд. Ин барои ба эътидол овардан ва инкишоф додани соха сурат мегирад. Вақте ки озмоишгарон мегӯянд, ки фorал барои нашри нав кофӣ устувор аст, он ба фorали усто муттаҳид карда мешавад. Баъдан, дар ин ӯҳдадорӣ барчасп сохта мешавад (тег: шумо метавонед дар ин ҷо бештар дар бораи он хонед ), ки рақами version таъин карда мешавад. Ҳамчун мисол, шумо метавонед ба расм дар оғози стратегия нигаред. Ҳамин тавр, Tag 1.0 танҳо нишонаест, ки versionи 1.0-и лоиҳаро нишон медиҳад. Ва чизи охирин ислоҳи фorал аст.

Фorалҳои Hotfix

Фorалҳои Hotfix инчунин барои нашри versionи нав дар Master пешбинӣ шудаанд. Ягона фарқият дар он аст, ки ин нашр ба нақша гирифта нашудааст. Ҳолатҳое ҳастанд, ки нуксонҳо ба миён меоянд ва аллакай дар истеҳсолот ошкор карда мешаванд. Масалан, iOS: вақте ки онҳо versionи навро мебароранд, шумо фавран як қатор навсозиҳоро бо ислоҳи камбудиҳое, ки пас аз нашр ошкор мешаванд, мегиред. Ба ин муносибат ин нуксонро зуд бартараф намуда, versionи нав баровардан лозим аст. Дар расми мо ин ба versionи 1.0.1 мувофиқат мекунад. Идеяи он аст, ки кор дар бораи функсияҳои нав метавонад дар лаҳзаҳое қатъ нашавад, ки шумо бояд камбудиро дар serverи воқеӣ ислоҳ кунед (чунон ки мо мегӯем, "дар истеҳсолот": боз нусхаи калимаи инглисии production). Фorали hotfix бояд аз фorали асосӣ таъсис дода шавад, зеро он давлатеро, ки дар истеҳсолот кор мекунад, намояндагӣ мекунад. Хамин ки илочи нуксон тайёр шуд, онро ба усто муттахнд мекунанд ва нишони нав ба вучуд меояд. Мисли омода кардани фorали релиз, як шохаи hotfix бояд ҳалли худро ба бахши рушд муттаҳид кунад.

Стратегияи ҷараёни кории Forking

Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои фorалҳо дар Git - 4Ҳамчун як қисми стратегияи Forking Workflow, таҳия тавре сурат мегирад, ки ду анбор мавҷуд аст:
  1. Анбори аслӣ, ки дар он ҳама тағиротҳо якҷоя карда мешаванд.
  2. Анбори форк (ин нусхаи анбори аслӣ дар ихтиёри як таҳиягари дигар аст, ки мехоҳад ба аслӣ тағирот ворид кунад).
То ҳол каме аҷиб садо медиҳад, дуруст? Барои онҳое, ки аллакай бо рушди сарчашмаи кушода дучор шудаанд, ин равиш аллакай шинос аст. Ин стратегия бартарии зеринро фароҳам меорад: таҳияро метавон дар анбори форк бидуни додани ҳуқуқ ба рушди муштарак дар асл анҷом дод. Албатта, соҳиби анбори аслӣ ҳақ дорад тағйироти пешниҳодшударо рад кунад. Ё розӣ шавед ва онҳоро бикушед. Ин ҳам барои соҳиби анбори аслӣ ва ҳам таҳиягаре, ки мехоҳад дар эҷоди ягон маҳсулот иштирок кунад, қулай аст. Масалан, шумо метавонед тағиротро ба ядрои Linux пешниҳод кунед . Агар Линус қарор кунад, ки онҳо маъно доранд, тағирот илова карда мешаванд (!!!).

Намунаи ҷараёни кории Forking

Forking Flow дар GitHub вақте истифода мешавад, ки китобхонае вуҷуд дорад, ки шумо мехоҳед истифода баред. Камбудие дорад, ки ба пурра истифода бурдани он халал мерасонад. Фарз мекунем, ки шумо ба қадри кофӣ мушкилотро омӯхтаед ва роҳи ҳалли онро медонед. Бо истифода аз стратегияи Forking Workflow, шумо метавонед ин мушкилотро бидуни додани ҳуқуқ барои кор дар анбори аслии китобхона ҳал кунед. Барои оғоз кардан, шумо бояд анбореро интихоб кунед, масалан, ядрои Spring Framework .Тугмаи Fork-ро дар кунҷи рости боло пайдо кунед ва онро клик кунед: Кори дастаҷамъона бидуни нофаҳмиҳо: таҳлor стратегияҳои шоха дар Git - 5Ин чанд вақтро мегирад, пас аз он нусхаи ин анбори аслӣ дар шумо пайдо мешавад. ҳисоби шахсӣ, ки нишон медиҳад, ки он як фард аст: Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои фorалҳо дар Гита - 6Пас шумо метавонед бо ин анбори маъмулӣ кор кунед, ба фorали асосӣ тағирот илова кунед ва вақте ки ҳама чиз омода аст, ба репозиторийии аслӣ як Pull-Request эҷод кунед. Барои ин, тугмаи дархости навро пахш кунед : Кори дастаҷамъона бидуни иштибоҳ: Фаҳмидани стратегияҳои фorалҳо дар Git - 7

Кадом стратегияро интихоб кардан лозим аст

Git як воситаи фасеҳ ва пурқувватест, ки ба шумо имкон медиҳад, ки бо истифода аз доираи васеи равандҳо ва стратегияҳо кор кунед. Аммо ҳар қадаре, ки интихоб бузургтар бошад, ҳамон қадар душвортар аст, ки кадом стратегияро ҳозир интихоб кунед. Равшан аст, ки ягон ҷавоби як андоза мувофиқ нест. Ҳамааш ба вазъият вобаста аст. Бо вуҷуди ин, якчанд тавсияҳо мавҷуданд, ки метавонанд дар ин кор кӯмак кунанд:
  1. Беҳтар аст, ки аввал стратегияи соддатаринро интихоб кунед. Танҳо дар ҳолати зарурӣ ба стратегияҳои мураккабтар гузаред.
  2. Стратегияҳоеро баррасӣ кунед, ки то ҳадди имкон шумораи ками шохаҳои таҳиякунанда доранд.
  3. Ба тарафҳои мусбӣ ва манфии стратегияҳои гуногун нигаред ва мувофиқи лоиҳа, дурустро интихоб кунед.
Ин ҳама чизест, ки ман мехостам ба шумо дар бораи стратегияи фorалҳо дар git бигӯям. Ташаккур барои таваҷҷӯҳатон :) Ба ҳисоби GitHub-и ман обуна шавед , ман аксар вақт кори худро дар он ҷо дар технологияҳо ва абзорҳои гуногуне, ки дар кори худ истифода мебарам, мегузорам.

истинодҳои муфид

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION