Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Na u ithutile litaelo tsa Git empa u batla ho nahana hore na ho kopanya ho tsoelang pele (CI) ho sebetsa joang? Kapa mohlomong u batla ho ntlafatsa mesebetsi ea hau ea letsatsi le letsatsi? Thupelo ena e tla u fa litsebo tse sebetsang tsa kopanyo e tsoelang pele u sebelisa polokelo ea GitHub. Thupelo ena ha ea rereloa ho ba wizate eo u ka e tobetsang feela; ho fapana le hoo, u tla etsa liketso tse tΕ‘oanang le tseo batho ba hlileng ba li etsang mosebetsing, ka tsela e tΕ‘oanang le eo ba e etsang. Ke tla hlalosa khopolo ha u ntse u feta mehatong e amehang.

Re etsa'ng?

Ha re ntse re tsoela pele, butle-butle re tla etsa lethathamo la mehato e tloaelehileng ea CI, e leng mokhoa o motle oa ho hopola lenane lena. Ka mantsoe a mang, re tla theha lethathamo la liketso tseo baetsi ba tsona ba li nkang ha ba ntse ba etsa kopanyo e tsoelang pele, ba etsa kopanyo e tsoelang pele. Hape re tla sebelisa sete e bonolo ea liteko ho tlisa ts'ebetso ea rona ea CI haufi le ea 'nete.

GIF ena e bonts'a boitlamo bo bolokiloeng polokelong ea hau ha u ntse u tsoela pele thupelong. Joalokaha u ka bona, ha ho letho le rarahaneng mona mme ke ntho e hlokahalang feela.

Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

U tla feta maemong a latelang a tloaelehileng a CI:

  • Sebetsa ka tΕ‘obotsi;
  • TΕ‘ebeliso ea liteko tse ikemetseng ho netefatsa boleng;
  • Ho kenngwa tshebetsong ha mosebetsi o ka sehloohong;
  • Ho rarolla likhohlano ha ho kopanngoa makala (ho kopanya likhohlano);
  • Phoso e etsahala tikolohong ea tlhahiso.

U tla ithuta eng?

U tla khona ho araba lipotso tse latelang:

  • Ho kopanya ho tsoelang pele (CI) ke eng?
  • Ke mefuta efe ea liteko tse ikemetseng tse sebelisoang ho CI, 'me ho arabela liketsong life tseo li bakoang ke tsona?
  • Likopo tsa ho hula ke eng 'me li hlokahala neng?
  • Test Driven Development (TDD) ke eng mme e amana joang le CI?
  • Na ke lokela ho kopanya kapa ho fokotsa liphetoho?
  • Khutlisetsa morao kapa u lokise mofuta o latelang?

Qalong ke ile ka fetolela lintho tse kang "ho hula likopo" hohle, empa ka lebaka leo ke ile ka etsa qeto ea ho khutlisetsa lipolelo tsa Senyesemane libakeng tse ling ho fokotsa tekanyo ea bohlanya temaneng. Ka linako tse ling ke tla sebelisa "programmer surzhik" joalo ka leetsi le monate "itlama" moo batho ba e sebelisang mosebetsing.

Ho kopanya ho tsoelang pele ke eng?

Kopanyo e Tsoelang Pele, kapa CI, ke mokhoa oa botekgeniki oo setho ka seng sa sehlopha se kopanyang khoutu ea bona sebakeng se tloaelehileng sa polokelo bonyane hang ka letsatsi, 'me khoutu e hlahisoang e tlameha ho hahoa bonyane ntle le liphoso.

Ho na le ho se lumellane ka lentsoe lena

Taba ea khang ke makhetlo a mangata a ho kopanya. Ba bang ba pheha khang ea hore ho kopanya khoutu hanngoe feela ka letsatsi ha hoa lekana ho kopanya kamehla. Ho fanoe ka mohlala oa sehlopha moo bohle ba nkang khoutu e ncha hoseng ebe ba e kopanya hang ka shoalane. Le hoja ena e le khanyetso e utloahalang, ka kakaretso ho lumeloa hore tlhaloso ea hang ka letsatsi e sebetsa ka mokhoa o utloahalang, e totobetse, ’me e loketse lihlopha tsa boholo bo fapaneng.

Khanyetso e 'ngoe ke hore C++ ha e sa le eona feela puo e sebelisoang ntlafatsong, 'me e hloka feela kopano e se nang liphoso e le mokhoa oa ho netefatsa e fokola. Sete e 'ngoe ea liteko (mohlala, liteko tse etsoang sebakeng sa heno) le tsona li tlameha ho phethoa ka katleho. Hona joale, sechaba se ntse se tsoela pele ho etsa hore sena e be tlhokahalo, 'me nakong e tlang "haha + liteko tsa lihlopha" mohlomong e tla ba mokhoa o tloaelehileng, haeba o se o ntse o le teng.

Kopanyo e Tsoelang Pele fapana le phepelo e tsoelang pele (Continuous Delivery, CD) ka hore ha e hloke mokhethoa oa tokollo ka mor'a potoloho e 'ngoe le e 'ngoe ea kopanyo.

Lethathamo la mehato eo re tla e sebelisa nakong eohle ea thupelo

  1. Kenya khoutu ea morao-rao. Theha lekala ho tloha master. Qala ho sebetsa.
  2. Etsa boitlamo lekaleng la hau le lecha. Haha 'me u leke sebakeng sa heno. Feta? E-ea mohatong o latelang. O hlolehile? Lokisa liphoso kapa liteko 'me u leke hape.
  3. Tobetsa sebakeng sa hau sa polokelo se hole kapa lekaleng le hole.
  4. Etsa kopo ea ho hula. Buisanang ka liphetoho, eketsa boitlamo bo eketsehileng ha lipuisano li ntse li tsoela pele. Etsa hore liteko li fete lekaleng la likarolo.
  5. Kopanya/rebase kemiso e tsoang ho master. Etsa hore liteko li fete sephetho sa ho kopanya.
  6. Tsamaisa ho tloha lekaleng la likarolo ho ea tlhahisong.
  7. Haeba ntho e 'ngoe le e' ngoe e le ntle ka tlhahiso ka nako e itseng, kopanya liphetoho ho ea pele.

Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

️ Boitokisetso

Etsa bonnete ba hore u na le software e nepahetseng

Ho nka thupelo ena u tla e hloka Node.js ΠΈ Git client.

U ka sebelisa moreki ofe kapa ofe oa Git, empa ke tla fana ka litaelo feela bakeng sa mohala oa taelo.

Etsa bonnete ba hore u na le Git client e kentsoeng e tΕ‘ehetsang mohala oa taelo

Haeba ha o so be le moreki oa Git ea tΕ‘ehetsang mohala oa taelo, o ka fumana litaelo tsa ho kenya mona.

Lokisetsa polokelo

U tla hloka ho iketsetsa kopi ea hau (fork) template repository e nang le khoutu bakeng sa thupelo ho GitHub. Ha re lumellane ho letsetsa kopi ena ea hau sebaka sa polokelo.

O qetile? Haeba ha o so fetole litlhophiso tsa kamehla, polokelo ea hau ea thupelo e kanna ea bitsoa continuous-integration-team-scenarios-students, e fumaneha akhaonteng ea hau ea GitHub mme URL e shebahala tjena

https://github.com/<вашС имя ползоватСля Π½Π° GitHub>/continuous-integration-team-scenarios-students

Ke tla bitsa aterese ena feela <URL рСпозитория>.

Li-angle brackets joalo ka <Ρ‚ΡƒΡ‚> ho tla bolela hore u tlameha ho nkela polelo e joalo sebaka ka boleng bo loketseng.

Etsa bonnete ba hore Liketso tsa GitHub e kenyellelitsoe polokelong ea thupelo ena. Haeba li sa lumelloa, ka kopo li lumelle ka ho tobetsa konopo e kholo bohareng ba leqephe, eo u ka fihlang ho eona ka ho tobetsa Liketso ho sebopeho sa GitHub.

U ke ke ua khona ho qeta thupelo ka ho latela litaelo tsa ka haeba Liketso tsa GitHub li sa lumelloa.

Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

U ka sebelisa bokhoni ba GitHub ho fana ka Markdown ho bona boemo ba hajoale ba lenane leo re le ngolang mona.

https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md

Mabapi le likarabo

Leha tsela e molemohali ea ho qeta thupelo ena e le ho iketsetsa, o kanna oa ba le mathata.

Haeba u ikutloa hore ha u utloisise seo u lokelang ho se etsa 'me u sitoa ho tsoela pele, u ka sheba khoele solution, e leng sebakeng sa hau sa polokelo ea ho qala.
Ke kopa o seke oa kopanya solution Π² master nakong ea thupelo. U ka sebelisa lekala lena ho fumana seo u lokelang ho se etsa, kapa ho bapisa khoutu ea hau le ea mongoli, u sebelisa bokhoni bohle boo Git e re fang eona. Haeba u lahlehile ka ho feletseng, u ka nka sebaka sa lekala ka ho feletseng master lekaleng solution ebe o seta bocha bukana ea hau ea ho sebetsa ho ea mohatong oa thupelo oo u o hlokang.

Sebelisa sena feela haeba u hlile u se hloka

Kenya khoutu ea hau

git add .
git commit -m "Backing up my work"

Litaelo tsena

  • reha bocha master Π² master-backup;
  • reha bocha solution Π² master;
  • etela lekaleng le lecha master le ho ngola bocha litaba tsa bukana e sebetsang;
  • Theha lekala la "tharollo" ho tsoa ho "master" (e neng e le "tharollo") haeba u hloka lekala la "tharollo" nakong e tlang.

git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution

Ka mor'a mehato ena u ka sebelisa git log master ho fumana hore na o hloka boitlamo bofe.
U ka seta bukana ea hau ea ts'ebetso ho etsa boitlamo bona ka tsela ena:

git reset --hard <the SHA you need>

Haeba u thabetse sephetho, ka nako e 'ngoe u tla hloka ho phatlalatsa mofuta oa hau oa polokelo sebakeng se hole sa polokelo. U se ke ua lebala ho hlalosa ka ho hlaka lekala le hōle ha u etsa sena.

git push --force origin master

Ka kopo hlokomela hore re sebelisa git push --force. Ha ho na monyetla oa hore u batle ho etsa sena khafetsa, empa re na le boemo bo ikhethileng mona le mosebelisi a le mong oa polokelo eo, ho feta moo, a utloisisang seo a se etsang.

Ho qala ho sebetsa

Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Ha re qaleng ho bokella lethathamo la rona la mehato ea CI. Ka tloaelo u ne u tla qala mohato ona ka ho sheba mofuta oa morao-rao oa khoutu ho tsoa sebakeng sa polokelo e hole, empa ha re na polokelo ea lehae, kahoo re e kopanya ho tsoa ho e hole.

️ Mosebetsi: ntlafatsa polokelo ea lehae, theha lekala ho tsoa master, qala ho sebetsa

  1. Koala sebaka sa polokelo ho tloha <URL рСпозитория>.
  2. Matha npm install bukeng ea polokelo ea lithupelo; Re e hloka ho kenya Jest, eo re e sebelisang ho etsa liteko.
  3. Theha lekala 'me u le rehe lebitso feature. Fetohela ho khoele ena.
  4. Kenya khoutu ea teko ho ci.test.js pakeng tsa maikutlo a nkopang ho etsa sena.

    it('1. pull latest code', () => {
      expect(/.*pull.*/ig.test(fileContents)).toBe(true);
    });
    
    it('2. add commits', () => {
      expect(/.*commit.*/ig.test(fileContents)).toBe(true);
    });
    
    it('3. push to the remote branch with the same name', () => {
      expect(/.*push.*/ig.test(fileContents)).toBe(true);
    });
    
    it('4. create a pull request and continue working', () => {
      expect(/.*pulls+request.*/ig.test(fileContents)).toBe(true);
    });

  5. Kenya mongolo ka mehato ea pele e 4 faeleng ci.md.
    1. Pull in the latest code. Create a branch from `master`. Start working.    
    2. Create commits on your new branch. Build and test locally.  
    Pass? Go to the next step. Fail? Fix errors or tests and try again.  
    3. Push to your remote repository or remote branch.  
    4. Create a pull request. Discuss the changes, add more commits  
    as discussion continues. Make tests pass on the feature branch.  

    Melao

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ курса
git clone <repository URL>
cd <repository name>

# Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ npm install Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ рСпозитория курса; ΠΎΠ½ установит Jest, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для запуска тСстов.
npm install

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ feature. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° эту Π² Π²Π΅Ρ‚ΠΊΡƒ.
git checkout -b feature

# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.
# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Theha boitlamo lekaleng le lecha, haha ​​'me u leke sebakeng sa heno

Re tlil'o theha liteko tse lokelang ho etsoa pele re etsa, ebe re etsa khoutu.

Maemo a tloaelehileng ha liteko li itlhahisa

  • Sebakeng sa heno:
    • Ka ho tswelapele kapa ho latela diphetoho tse nepahetseng tsa khoutu;
    • Ho boloka (bakeng sa lipuo tse tolokiloeng kapa tse bokelletsoeng ka JIT);
    • Nakong ea kopano (ha ho kopanngoa ho hlokahala);
    • Ka boitlamo;
    • Ha o phatlalatsa sebakeng sa polokelo se arolelanoang.

  • Ho seva sa moaho kapa tikolohong ea kaho:
    • Ha khoutu e phatlalatsoa lekaleng la motho ka mong/bobolokelong.
    • Khouto khoeleng ena e ntse e lekoa.
    • Sephetho se ka bang teng sa ho kopanya se lekoa (hangata ka master).
    • E le mohato o tsoelang pele oa ho kopanya / phaephe e tsoelang pele ea phano

Ka tloaelo, ha sehlopha sa liteko se sebetsa ka potlako, hangata u ka khona ho se tsamaisa. Kabo e tloaelehileng ea sethala e kanna ea shebahala tjena.

  • Liteko tse potlakileng tsa yuniti - nakong ea kaho, ka lipeipi tsa CI
  • Liteko tse liehang tsa yuniti, likarolo tse potlakileng le liteko tsa kopanyo - ka boitlamo, liphaepheng tsa CI
  • Liteko tse liehang tsa karolo le ho kopanya - ka phaepheng ea CI
  • Teko ea ts'ireletso, tlhahlobo ea mojaro le liteko tse ling tse jang nako kapa tse theko e boima - ho liphaephe tsa CI / CD, empa feela ka mekhoa / methati / liphaephe tse itseng tsa kaho, mohlala, ha u lokisa mokhethoa oa tokollo kapa ha a sebetsa ka letsoho.

️ Mosebetsi

Ke fana ka tlhahiso ea ho tsamaisa liteko ka letsoho pele u sebelisa taelo npm test. Kamora moo, ha re kenyeng hook ea git ho etsa liteko tsa rona ka boitlamo. Ho na le ts'ebetso e le 'ngoe: Li-hook tsa Git ha li nkoe e le karolo ea polokelo, ka hona li ke ke tsa etsoa ho tsoa ho GitHub hammoho le lisebelisoa tse ling tsa thupelo. Ho kenya hook o hloka ho matha install_hook.sh kapa kopitsa faele repo/hooks/pre-commit ho directory ea lehae .git/hooks/.
Ha u etsa boitlamo, u tla bona hore liteko li sebetsa 'me ba hlahloba ho bona hore na mantsoe a bohlokoa a teng lethathamong.

  1. Etsa liteko ka letsoho ka ho tsamaisa taelo npm test foleng ea polokelo ea lithuto tsa hau. Netefatsa hore liteko li phethiloe.
  2. Beha hook ea boitlamo (hook ea pele) ka ho matha install_hook.sh.
  3. Kenya liphetoho tsa hau sebakeng sa hau sa polokelo ea lehae.
  4. Etsa bonnete ba hore liteko li etsoa pele u etsa kopo.

Sebaka sa hau sa polokelo se lokela ho shebahala tjena ka mor'a ho latela mehato ena.
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Melao

# УстановитС pre-commit hook Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.  

# Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "Add first CI steps" Π² качСствС сообщСния ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ тСсты Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.  

Phatlalatsa khoutu sebakeng sa polokelo se hole kapa lekaleng le hole

Hang ha ba qetile ho sebetsa sebakeng sa heno, bahlahisi ba atisa ho etsa hore khoutu ea bona e fumanehe phatlalatsa e le hore qetellong e ka kopanngoa le sechaba. Ka GitHub, sena se finyelloa ka ho phatlalatsa mosebetsi ho kopi ea hau ea polokelo (foroko ea hau) kapa lekaleng la motho.

  • Ka lifereko, moqapi o kopanya polokelo e arolelanoang e hole, a iketsetsa kopi ea eona e hole, e tsejoang hape e le fereko. E ntan'o kopanya polokelo ena ea botho hore e sebetse le eona sebakeng sa heno. Ha mosebetsi o phethiloe 'me li-commit li entsoe, o li sutumelletsa ka ferekong ea hae, moo li fumanehang ho ba bang' me li ka kopanngoa le polokelo e tloaelehileng. Mokhoa ona o sebelisoa hangata mererong e bulehileng ea mohloli ho GitHub. E boetse e sebelisoa thupelong ea ka e tsoetseng pele [Team Work le CI with Git] (http://devops.redpill.solutions/).
  • Mokhoa o mong ke oa ho sebelisa polokelo e le 'ngoe feela e hole le ho bala lekala feela master polokelo e arolelanoang "e sirelelitsoeng". Boemong bona, bahlahisi ka bomong ba phatlalatsa khoutu ea bona makaleng a polokelo e hole e le hore ba bang ba ka sheba khoutu ena, haeba tsohle li lokile, li kopanye le. master polokelo e arolelanoang.

Thutong ena, re tla be re sebelisa mokhoa oa ho sebetsa o sebelisang makala.

Ha re phatlalatseng khoutu ea rona.

️ Mosebetsi

  • Phatlalatsa liphetoho lekaleng le hole le nang le lebitso le tΕ‘oanang le leo u sebetsang ho lona

Melao

git push --set-upstream origin feature

Etsa kopo ea ho hula

Etsa kopo ea ho hula ka sehlooho Tlhahlobo ea mehato. Kenya feature joalo ka "lekala la hlooho" le master joalo ka "kala ea motheo".

Netefatsa hore o kentse master hae fereko polokelo Joaloka "lekala la motheo", nke ke ka araba likopo tsa liphetoho sebakeng sa polokelo ea thepa.

Ho GitHub lingo, "lekala la motheo" ke lekala leo u thehang mosebetsi oa hau ho lona, ​​​​'me "hlooho ea lekala" ke lekala le nang le liphetoho tse reriloeng.

Buisanang ka liphetoho, eketsa boitlamo bo bocha ha puisano e ntse e tsoela pele

Kopo ea ho hula(PR)

Kopo ea ho hula(PR) ke mokhoa oa ho buisana le ho ngola khoutu, hammoho le ho etsa tlhahlobo ea khoutu. Likopo tsa ho hula li reheletsoe ka mokhoa o akaretsang oa ho kopanya liphetoho tsa motho ka mong khoutu e akaretsang. Ka tloaelo, motho o kopanya polokelo ea projeke e hole mme o sebetsa ka khoutu sebakeng sa heno. Kamora moo, o kenya khoutu sebakeng sa hae sa polokelo se hole mme o kopa ba ikarabellang bakeng sa polokelo ea semmuso hore ba nke(Hula) khoutu ea eona polokelong ea bona ea lehae, moo ba hlahlobang le ho kopanya (tsamaea) ea hae. Khopolo ena e boetse e tsejoa ka mabitso a mang, mohlala, kopanye kopo.

Ha e le hantle ha ua tlameha ho sebelisa tΕ‘obotsi ea kopo ea ho hula ea GitHub kapa li-platform tse tΕ‘oanang. Lihlopha tsa nts'etsopele li ka sebelisa mekhoa e meng ea puisano, ho kenyelletsa puisano le sefahleho, mehala ea lentsoe, kapa lengolo-tsoibila, empa ho ntse ho na le mabaka a mangata a ho sebelisa likopo tsa ho hula ka mokhoa oa liforamu. Tse ling tsa tsona ke tsena:

  • lipuisano tse hlophisitsoeng tse amanang le liphetoho tse itseng tsa khoutu;
  • e le sebaka sa ho bona maikutlo mabapi le mosebetsi o ntseng o tsoela pele ho tsoa ho li-autotesters le lithaka;
  • ho etsoa semmuso ha litlhahlobo tsa khoutu;
  • e le hore hamorao u ka fumana mabaka le maikutlo a ka morao ho sena kapa sengoathoana sa khoutu.

Ka tloaelo o etsa kopo ea ho hula ha o hloka ho bua ka ntho e itseng kapa ho fumana maikutlo. Ka mohlala, haeba u sebetsa karolong e ka sebelisoang ka litsela tse fetang tse le 'ngoe, u ka etsa kopo ea ho hula pele u ngola mohala oa pele oa khoutu ho arolelana maikutlo a hau le ho buisana ka merero ea hau le basebetsi-'moho le uena. Haeba mosebetsi o le bonolo, kopo ea ho hula e buloa ha ntho e se e entsoe, e ikemiselitse, 'me e ka buisanoa. Maemong a mang, o kanna oa batla ho bula PR ka mabaka a taolo ea boleng feela: ho etsa liteko tse ikemetseng kapa ho qala tlhahlobo ea khoutu. Ho sa tsotellehe hore na u etsa qeto efe, u se ke ua lebala ho @ bolela batho bao tumello ea bona eo ue batlang ka kopo ea hau ea ho hula.

Ka tloaelo, ha u theha PR, u etsa se latelang.

  • Hlalosa hore na u batla ho fetola eng le hore na u batla ho e fetola hokae.
  • Ngola tlhaloso e hlalosang sepheo sa liphetoho. U ka 'na ua batla:
    • eketsa eng kapa eng ea bohlokoa e sa totobaleng ho tsoa khoutong, kapa ho hong ho bohlokoa bakeng sa ho utloisisa moelelo oa taba, joalo ka #bugs le linomoro tsa boitlamo;
    • @mention mang kapa mang eo u batlang ho qala ho sebetsa le eena, kapa u ka @mention ho maikutlo hamorao;
    • kopa basebetsi-'moho ho thusa ka ntho e itseng kapa ho hlahloba ntho e itseng.

Hang ha u bula PR, liteko tse lokiselitsoeng ho sebetsa maemong a joalo lia etsoa. Tabeng ea rona, sena e tla ba sete e tΕ‘oanang ea liteko tseo re li entseng sebakeng sa heno, empa morerong oa sebele ho ka 'na ha e-ba le liteko le licheke tse eketsehileng.

Ka kopo ema ha liteko li ntse li phethoa. U ka bona boemo ba liteko botlaaseng ba puisano ea PR ho sebopeho sa GitHub. Tsoela pele ha liteko li phethiloe.

️ Kenya molaetsa mabapi le ho se be teng ha lenane la mehato ea CI

Lethathamo le sebelisitsoeng thupelong ena le na le mabaka a utloahalang le a ikemetseng, re lokela ho eketsa lintlha ka sena.

️ Mosebetsi: theha kopo ea ho hula maikutlo ana

  1. Fetolela lekaleng master.
  2. Theha lekala le bitsoang bugfix.
  3. Kenya mongolo qetellong ea faele ci.md.
    > **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development  
    when code is deployed straight from feature branches. This list is just an interpretation  
    that I use in my [DevOps courses](http://redpill.solutions).  
    The official tutorial is [here](https://guides.github.com/introduction/flow/).
  4. Etsa liphetoho.
  5. Phatlalatsa khoele bugfix sebakeng sa polokelo se hole.
  6. Etsa kopo ea ho hula e bitsoang Ho eketsa tlhaloso e nang le lekala la hlooho bugfix le lekala la motheomaster.

Netefatsa hore o kentse master hae fereko polokelo Joaloka "lekala la motheo", nke ke ka araba likopo tsa liphetoho sebakeng sa polokelo ea thepa.

Sena ke kamoo polokelo ea hau e lokelang ho shebahala kateng.
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Melao

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix.
git checkout master

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix-remark.
git checkout -b bugfix

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкст примСчания Π²Π½ΠΈΠ·Ρƒ ci.md.

# Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния
git add ci.md
git commit -m "Add a remark about the list being opinionated"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
git push --set-upstream origin bugfix

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ pull request ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ интСрфСйса GitHub ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Amohela kopo ea ho hula "Eketsa maikutlo"

️ Mosebetsi

  1. Etsa kopo ea ho hula.
  2. Tobetsa "Ho kopanya kopo ea ho hula".
  3. Tobetsa "Tiisa ho kopanya".
  4. Tobetsa "Delete lekala", ha re sa e hloka.

Sena ke sets'oants'o sa boitlamo ka mor'a ho kopanya.
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

️ Tsoela pele ho sebetsa le ho eketsa liteko

Ho sebelisana ka kopo ea ho hula hangata ho fella ka mosebetsi o eketsehileng. Hangata sena ke sephetho sa tlhahlobo ea khoutu kapa puisano, empa thutong ea rona re tla etsa mohlala oa sena ka ho kenyelletsa lintho tse ncha lethathamong la rona la mehato ea CI.

Khokahano e tsoelang pele hangata e kenyelletsa tlhahlobo e itseng. Litlhoko tsa khaso ea liteko lia fapana 'me hangata li fumanoa tokomaneng e bitsoang "contribution guidelines". Re tla e boloka e le bonolo mme re kenye teko bakeng sa mola o mong le o mong lethathamong la rona la tlhahlobo.

Ha u etsa mesebetsi, leka ho etsa liteko pele. Haeba u kentse ka nepo pre-commit hook pejana, tlhahlobo e sa tsoa eketsoa e tla etsoa, ​​​​e tla hloleha, 'me ha ho letho le tla etsoa. Hlokomela hore ke kamoo re tsebang hore liteko tsa rona li leka ho hong. Hoa thahasellisa hore haeba re qalile ka khoutu pele ho liteko, ho feta liteko ho ka bolela hore khoutu e sebetsa kamoo ho neng ho lebeletsoe kateng, kapa hore liteko li ne li sa leke letho. Ho feta moo, haeba re ne re sa ngola liteko qalong, mohlomong re ka be re li lebetse ka ho feletseng, kaha ho ne ho se letho le ka beng le ile la re hopotsa.

Tsoelo-pele e Lekoang (TDD)

TDD e khothaletsa liteko tsa ho ngola pele ho khoutu. Mokhoa o tloaelehileng oa ts'ebetso o sebelisang TDD o shebahala tjena.

  1. Kenya teko.
  2. Etsa liteko tsohle 'me u netefatse hore tlhahlobo e ncha ha e atlehe.
  3. Ngola khoutu.
  4. Etsa liteko, etsa bonnete ba hore liteko tsohle lia feta.
  5. Fetola khoutu ea hau.
  6. Pheta-pheta.

Hobane liphetho tsa liteko tse sa atleheng hangata li bonts'oa ka bofubelu, 'me tse fetileng hangata li bonts'oa ka botala, potoloho ena e boetse e tsejoa e le red-green-refactor.

️ Mosebetsi

Ntlha ea pele, leka ho etsa liteko le ho li tlohela hore li hlolehe, ebe u eketsa le ho fana ka mongolo oa lenane la mehato ea CI ka boeona. U tla bona hore liteko lia feta ("tala").
Ebe u phatlalatsa khoutu e ncha sebakeng sa polokelo e hole 'me u shebelle liteko tse tsamaisoang ho sebopeho sa GitHub botlaaseng ba puisano ea kopo ea ho hula le ntlafatso ea boemo ba PR.

  1. Fetolela lekaleng feature.
  2. Kenya liteko tsena ho ci.test.js kamora mohala wa ho qetela it (...);.

    it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => {
      expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true);
    });
    
    it('6. Deploy from the feature branch to production.', () => {
      expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true);
    });
    
    it('7. If everything is good in production for some period of time, merge changes to master.', () => {
      expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true);
    });

  3. Leka ho etsa liteko. Haeba pre-commit hook e kentsoe, teko ea boitlamo e tla hloleha.
  4. Ebe eketsa mongolo ona ho ci.md.
    5. Merge/rebase commits from master. Make tests pass on the merge result.  
    6. Deploy from the feature branch with a sneaky bug to production.
    7. If everything is good in production for some period of time, merge changes to master. 
  5. Etsa le ho etsa liphetoho sebakeng sa heno.
  6. Kenya liphetoho lekaleng feature.

Joale u lokela ho ba le ntho e kang ena
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Melao


# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π° Π²Π΅Ρ‚ΠΊΡƒ feature
git checkout feature

# Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСсты Π² ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс ci.test.js Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ
git add ci.test.js

# ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ тСсты. Если pre-commit hook установлСны, ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚.
git commit

# Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкст Π² ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

# ВнСситС измСнСния ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΈΡ…
git add ci.md
git commit -m "Add the remaining CI steps"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² Π²Π΅Ρ‚ΠΊΡƒ feature
git push

Kopanya likhohlano

Eya ho Fetola Kopo Tlhahlobo ea mehato.

Le hoja re sa ka ra etsa letho le phoso 'me liteko tsa khoutu ea rona li fetile, re ntse re sitoa ho kopanya lekala feature ΠΈ master. Ke hobane khoele e 'ngoe bugfix e kopantsoe le master ha re ntse re sebetsa PR ena.
Sena se baka boemo moo lekala le hole master e na le mofuta o mocha ho feta oo re thehileng lekala ho oona feature. Ka lebaka lena re ke ke ra khutlisa HEAD feela master ho isa qetellong ya khoele feature. Boemong bona, re hloka ho kopanya kapa ho kenya kopo feature rebase master. GitHub e hlile e ka kopanya othomathike haeba ho se na likhohlano. Ijoo, boemong ba rona, makala ka bobeli a na le liphetoho tse qothisanang lehlokoa le faele ci.md. Boemo bona bo tsejoa e le khohlano ea ho kopanya, 'me re hloka ho e rarolla ka letsoho.

Kopanya kapa fokotsa

Kopanya

  • E theha boitlamo bo eketsehileng ba ho kopanya mme e boloka nalane ea mosebetsi.
    • E boloka boitlamo ba mantlha ba makala ka litempe tsa bona tsa nako le bangoli.
    • E boloka SHA ea boitlamo le lihokela ho tsona lipuisanong tsa kopo ea phetoho.
  • E hloka tharollo ea nako e le 'ngoe ea likhohlano.
  • E etsa hore pale e se ke ea hlaka.
    • Pale e ka ba thata ho bala ka lebaka la palo e kholo ea makala (ho hopotsa mohala oa IDE).
    • E etsa hore ho lokisa bothata ho be thata le ho feta, mohlala. git bisect ha e na thuso - e tla fumana feela boitlamo ba ho kopanya.

Khutlisa

  • Li-replays li etsoa ho tloha lekaleng la hajoale ka holim'a lekala la motheo ka ho latellana.
    • Lits'ebetso tse ncha tse nang le li-SHA tse ncha lia hlahisoa, li etsa hore boitlamo ba GitHub bo ts'oane le likopo tsa mantlha tsa ho hula, empa eseng maikutlo a tΕ‘oanang.
    • Boitlamo bo ka kopanngoa hape le ho fetoloa ts'ebetsong, kapa tsa kopanngoa ho ba bo le bong.
  • Likhohlano tse ngata li ka hloka ho rarolloa.
  • E u lumella ho boloka pale ea mola.
    • Pale e ka ba bonolo ho e bala hafeela e se telele haholo ntle le lebaka le utloahalang.
    • Ho lokisa liphoso le ho rarolla mathata ho bonolo hanyane: ho etsa hore ho khonehe git bisect, e ka etsa hore li-rollback tsa othomathike li hlake le ho tseba esale pele.
  • E hloka ho phatlalatsa lekala le nang le boitlamo bo fallang le folakha --force ha e sebelisoa le likopo tsa ho hula.

Ka tloaelo, lihlopha li lumellana ho sebelisa leano le tΕ‘oanang kamehla ha li hloka ho kopanya liphetoho. Sena e ka ba kopano e "hloekileng" kapa boitlamo bo "hloekileng" holimo, kapa ho hong ho lipakeng, joalo ka ho etsa boitlamo ka holimo ka kopanelo(git rebase -i) sebakeng sa makala bakeng sa makala a sa phatlalatsoang sebakeng sa polokelo ea sechaba, empa a kopanngoa bakeng sa makala a "sechaba".

Mona re tla sebelisa ho kopanya.

️ Mosebetsi

  1. Etsa bonnete ba hore khoutu e lekaleng la lehae master e nchafalitsoeng ho tsoa polokelong e hole.
  2. Fetolela lekaleng feature.
  3. Qala ho kopanya le lekala master. Khohlano ea ho kopanya ka lebaka la liphetoho tse qothisanang lehlokoa le ci.md.
  4. Rarolla khohlano e le hore lenane la rona la mehato ea CI le lintlha tse mabapi le eona li lule li le teng mongolong.
  5. Phatlalatsa boitlamo bo kopantseng lekaleng le hole feature.
  6. Sheba boemo ba kopo ea ho hula ho GitHub UI 'me u eme ho fihlela kopanyo e rarollotsoe.

Melao

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π² локальноС Π²Π΅Ρ‚ΠΊΠ΅ `master` ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git checkout master
git pull

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature
git checkout feature

# Π˜Π½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠΉΡ‚Π΅ слияниС с Π²Π΅Ρ‚ΠΊΠΎΠΉ master 
git merge master

# A merge conflict related to concurrent changes to ci.md will be reported
# => Auto-merging ci.md
#    CONFLICT (content): Merge conflict in ci.md
#    Automatic merge failed; fix conflicts and then commit the result.

# Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈ наш список шагов CI, ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² тСкстС.
# ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md Ρ‡Ρ‚ΠΎΠ± ΠΎΠ½ Π½Π΅ содСрТал ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° слияния
git add ci.md
git merge --continue
# ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ feature.
git push

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ статус запроса Π½Π° измСнСния Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС GitHub, Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ° слияниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

Mosebetsi o motle!

U se u qetile ka lethathamo mme joale u hloka ho amohela kopo ea ho hulela master.

️ Mosebetsi: Amohela kopo ea ho hula "Tlhahlobo ea Mehato"

  1. Bula kopo ea ho hula.
  2. Tobetsa "Ho kopanya kopo ea ho hula".
  3. Tobetsa "Tiisa ho kopanya".
  4. Tobetsa "Delete lekala" kaha ha re sa e hloka.

Sena ke sebaka sa hau sa polokelo hajoale
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Phoso ea sehlahisoa

Ho boleloa hore β€œteko e ka sebelisoa ho bontΕ‘a boteng ba liphoso, empa le ka mohla e le ho bontΕ‘a bosieo ba tsona.” Leha re bile le liteko mme ba sa re bonts'e liphoso, kokoana e bolotsana e ile ea kena tlhahisong.

Boemong bo joalo, re lokela ho ela hloko:

  • se tsamaisoang tlhahisong;
  • khoutu ka khoele master ka phoso, moo bahlahisi ba ka qalang mosebetsi o mocha.

Na ke lokela ho khutlisa kapa ke e lokise mofuteng o latelang?

Ho khutlela morao ke mokhoa oa ho kenya mofuta o tsebahalang oa pejana ho tlhahiso le ho khutlisetsa boitlamo bo nang le phoso. "Ho lokisa pele" ke tlatsetso ea tokiso ho master le ho tsamaisa mofuta o mocha kapele kamoo ho ka khonehang. Hobane li-API le li-schemas tsa database li fetoha joalo ka ha khoutu e romelloa tlhahisong, ka phepelo e tsoelang pele le tΕ‘ireletso e ntle ea liteko, ho khutlela morao hangata ho thata haholo ebile ho kotsi ho feta ho e lokisa mofuteng o latelang.

Kaha ho khutlela morao ha ho na kotsi ho rona, re tla tsamaea ka tsela ena, hobane e re lumella

  • lokisa phoso ho sehlahisoa kapele kamoo ho ka khonehang;
  • etsa khoutu ka master hanghang e loketse ho qala mosebetsi o motjha.

️ Mosebetsi

  1. Fetolela lekaleng master sebakeng sa heno.
  2. Ntlafatsa polokelo ea lehae ho tsoa polokelong e hole.
  3. Khutlisetsa boitlamo ba ho kopanya PR Tlhahlobo ea mehato Π² master.
  4. Phatlalatsa liphetoho sebakeng sa polokelo se hole.

Ena ke nalane ea polokelo e nang le tumellano ea ho kopanya e khutlisitsoeng
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Melao

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master.
git checkout master

# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git pull

# ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния PR Steps review Π² master.
# ΠœΡ‹ отмСняСм ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ истории, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
git show HEAD

# ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» послСдним Π² Π²Π΅Ρ‚ΠΊΠ΅ master Π΄ΠΎ слияния, Π±Ρ‹Π» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git push

️ Boitlhahlobo

Etsa bonnete ba hore ci.md ha e sa na mongolo "sneaky bug" kamora ho khutlisa boitlamo ba ho kopanya.

Lokisa lenane la mehato ea CI 'me u le khutlisetse ho master

Re khutlisitse ka botlalo boitlamo ba ho kopanya lekala. feature. Litaba tse monate ke hore hona joale ha re na phoso master. Litaba tse mpe ke hore lethathamo la rona la bohlokoa la mehato e tsoelang pele ea ho kopanya le lona le felile. Kahoo, ka nepo, re hloka ho sebelisa tokiso ho li-commits ho tloha feature le ho ba khutlisetsa ho master mmoho le tokiso.

Re ka rarolla bothata ka litsela tse fapaneng:

  • kgutlisetsa boitlamo bo emollang kopanyo feature с master;
  • move commits ho tloha ho ea pele feature.

Lihlopheng tse fapaneng tsa nts'etsopele li sebelisa mekhoa e fapaneng tabeng ena, empa re tla fetisetsa boitlamo bo molemo lekaleng le arohaneng le ho theha kopo e arohaneng ea ho hula bakeng sa lekala lena le lecha.

️ Mosebetsi

  1. Theha khoele e bitsoang feature-fix ebe o fetohela ho eona.
  2. Tlosa likopo tsohle ho tsoa lekaleng la pele feature ho khoele e ncha. Rarolla likhohlano tse kopaneng tse etsahetseng nakong ea phalliso.

    Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

  3. Kenya tlhahlobo ea ho fokotsa maemo ho ci.test.js:

    it('does not contain the sneaky bug', () => {
    expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
    });

  4. Etsa liteko sebakeng sa heno ho netefatsa hore ha li hlolehe.
  5. Tlosa mongolo "ka phoso e bolotsana" ho ci.md.
  6. Kenya liphetoho tsa liteko le liphetoho tsa lethathamo la mehato ho index ebe u li etsa.
  7. Phatlalatsang lekala sebakeng se hōle sa polokelo.

U tlameha ho ba le ntho e tΕ‘oanang le ena:
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Melao

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ feature-fix ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π΅Π΅.
git checkout -b feature-fix

# ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π±Ρ‹Π²ΡˆΠ΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ feature Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΈ пСрСносС.
# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ…ΡΡˆΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:
# - ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ списка: C0
# - Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ послСдниС элСмСнты списка: C2
git log --oneline --graph
git cherry-pick C0..C2
# Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния
# - ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΈ/ΠΈΠ»ΠΈ ci.test.js
# - Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² индСкс
# - Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ "git cherry-pick --continue", ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ рСгрСссионный тСст Π² ci.test.js
# ЗапуститС тСсты локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

# Π£Π΄Π°Π»ΠΈΡ‚Π΅ тСкст " with a sneaky bug" Π² ci.md.

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс измСнСния тСстов ΠΈ Π² спискС шагов ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΈΡ….
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
git push --set-upstream origin feature-fix

Etsa kopo ea ho hula.

Etsa kopo ea ho hula ka sehlooho Ho lokisa tΕ‘obotsi. Kenya feature-fix joalo ka "lekala la hlooho" le master joalo ka "kala ea motheo".
Ka kopo, ema ha liteko li felile. U ka bona boemo ba liteko botlaaseng ba lipuisano tsa PR.

Netefatsa hore o kentse master hae fereko polokelo Joaloka "lekala la motheo", nke ke ka araba likopo tsa liphetoho sebakeng sa polokelo ea thepa.

Amohela kopo ea ho hula "Lokisa tΕ‘obotsi"

Ke leboha tokiso! Ka kopo amohela liphetoho ho master ho tloha kopo ya ho hula.

️ Mosebetsi

  1. Tobetsa "Ho kopanya kopo ea ho hula".
  2. Tobetsa "Tiisa ho kopanya".
  3. Tobetsa "Delete lekala" kaha ha re sa e hloka.

Sena ke seo u lokelang ho ba le sona hajoale.
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele

Kea u babatsa!

U phethetse mehato eohle eo batho ba e nkang ka nako e sa khaotseng ea ho kopanya.

Haeba u hlokomela mathata afe kapa afe ka thupelo kapa u tseba ho e ntlafatsa, ka kopo theha bothata ho polokelo e nang le lisebelisoa tsa thupelo. Thuto ena e boetse e na le phetolelo e sebetsanang ho sebelisa GitHub Learning Lab e le sethala.

Source: www.habr.com

Eketsa ka tlhaloso