Hali za kawaida na ushirikiano unaoendelea

Umejifunza maagizo ya Git lakini unataka kufikiria jinsi ujumuishaji unaoendelea (CI) unavyofanya kazi katika ukweli? Au labda unataka kuboresha shughuli zako za kila siku? Kozi hii itakupa ujuzi wa vitendo katika ujumuishaji unaoendelea kwa kutumia hazina ya GitHub. Kozi hii haikusudiwi kuwa mchawi ambao unaweza kubofya tu; kinyume chake, utafanya vitendo sawa na ambavyo watu hufanya kazini, kwa njia sawa na wanafanya. Nitaeleza nadharia unapopitia hatua zinazohusika.

Tunafanya nini?

Tunapoendelea, tutaunda hatua kwa hatua orodha ya hatua za kawaida za CI, ambayo ni njia nzuri ya kukumbuka orodha hii. Kwa maneno mengine, tutaunda orodha ya vitendo ambavyo watengenezaji huchukua wakati wa kufanya ushirikiano unaoendelea, wakifanya ushirikiano unaoendelea. Pia tutatumia seti rahisi ya majaribio kuleta mchakato wetu wa CI karibu na ule halisi.

GIF hii inaonyesha kimkakati ahadi kwenye hazina yako unapoendelea kwenye kozi. Kama unaweza kuona, hakuna chochote ngumu hapa na muhimu zaidi.

Hali za kawaida na ushirikiano unaoendelea

Utapitia hali zifuatazo za kawaida za CI:

  • Fanya kazi kwenye kipengele;
  • Utumiaji wa vipimo vya kiotomatiki ili kuhakikisha ubora;
  • Utekelezaji wa kazi ya kipaumbele;
  • Utatuzi wa migogoro wakati wa kuunganisha matawi (unganisha migogoro);
  • Hitilafu hutokea katika mazingira ya uzalishaji.

Utajifunza nini?

Utaweza kujibu maswali yafuatayo:

  • Ujumuishaji endelevu (CI) ni nini?
  • Ni aina gani za majaribio ya kiotomatiki hutumiwa katika CI, na kwa kujibu ni vitendo gani vinachochewa?
  • Maombi ya kuvuta ni nini na yanahitajika lini?
  • Maendeleo ya Kuendesha Mtihani (TDD) ni nini na inahusiana vipi na CI?
  • Je, niunganishe au nibadilishe tena mabadiliko?
  • Rudisha nyuma au urekebishe katika toleo linalofuata?

Mwanzoni nilitafsiri vitu kama "maombi ya kuvuta" kila mahali, lakini kwa sababu hiyo niliamua kurudisha misemo kwa Kiingereza katika sehemu zingine ili kupunguza kiwango cha wazimu katika maandishi. Wakati fulani nitatumia "programmer surzhik" kama vile kitenzi kizuri "commit" ambapo watu huitumia kazini.

Ushirikiano endelevu ni nini?

Kuendelea Kuunganishwa, au CI, ni mazoezi ya kiufundi ambapo kila mwanachama wa timu huunganisha misimbo yake kwenye hazina ya pamoja angalau mara moja kwa siku, na msimbo unaotokana lazima uundwe angalau bila hitilafu.

Kuna kutokubaliana kuhusu neno hili

Hatua ya ugomvi ni mzunguko wa ushirikiano. Wengine wanasema kuwa kuunganisha msimbo mara moja tu kwa siku haitoshi kuunganishwa kila wakati. Mfano umetolewa wa timu ambapo kila mtu huchukua nambari mpya asubuhi na kuiunganisha mara moja jioni. Ingawa hili ni pingamizi linalofaa, kwa ujumla inaaminika kuwa ufafanuzi wa mara moja kwa siku ni wa vitendo, mahususi na unafaa kwa timu za saizi tofauti.

Pingamizi lingine ni kwamba C++ sio lugha pekee inayotumiwa katika ukuzaji, na kuhitaji tu mkusanyiko usio na makosa kama njia ya uthibitishaji ni dhaifu. Baadhi ya majaribio (kwa mfano, majaribio ya vipimo yanayotekelezwa ndani ya nchi) lazima pia yakamilike kwa mafanikio. Kwa sasa, jumuiya inaelekea kufanya hili kuwa hitaji, na katika siku zijazo "majaribio ya kujenga + kitengo" labda yatakuwa mazoea ya kawaida, ikiwa haijafanya hivyo.

Kuendelea Kuunganishwa tofauti na utoaji wa kuendelea (Utoaji Unaoendelea, CD) kwa kuwa hauhitaji mgombeaji wa toleo baada ya kila mzunguko wa ujumuishaji.

Orodha ya hatua tutakazotumia katika kipindi chote

  1. Vuta msimbo wa hivi punde. Unda tawi kutoka master. Anza kufanya kazi.
  2. Unda ahadi kwenye tawi lako jipya. Jenga na ujaribu ndani ya nchi. Kupitisha? Nenda kwa hatua inayofuata. Umeshindwa? Rekebisha hitilafu au majaribio na ujaribu tena.
  3. Bonyeza kwenye hazina yako ya mbali au tawi la mbali.
  4. Unda ombi la kuvuta. Jadili mabadiliko, ongeza ahadi zaidi mazungumzo yakiendelea. Fanya majaribio kupita kwenye tawi la kipengele.
  5. Unganisha/punguza tena ahadi kutoka kwa bwana. Fanya vipimo kupita kwenye matokeo ya kuunganisha.
  6. Sambaza kutoka kwa tawi la kipengele hadi toleo la umma.
  7. Ikiwa kila kitu ni nzuri katika uzalishaji kwa muda fulani, unganisha mabadiliko kwa bwana.

Hali za kawaida na ushirikiano unaoendelea

️ Maandalizi

Hakikisha una programu sahihi

Ili kuchukua kozi hii utahitaji node.js ΠΈ Mteja wa Git.

Unaweza kutumia mteja wowote wa Git, lakini nitatoa tu amri kwa safu ya amri.

Hakikisha umesakinisha mteja wa Git ambaye anaunga mkono safu ya amri

Ikiwa bado huna mteja wa Git anayetumia safu ya amri, unaweza kupata maagizo ya usakinishaji hapa.

Tayarisha hifadhi

Utahitaji kuunda nakala ya kibinafsi (uma) hazina ya kiolezo na nambari ya kozi kwenye GitHub. Tukubali kupiga nakala hii ya kibinafsi hazina ya kozi.

Umemaliza? Ikiwa haujabadilisha mipangilio chaguo-msingi, hazina yako ya kozi ina uwezekano mkubwa wa kuitwa continuous-integration-team-scenarios-students, iko katika akaunti yako ya GitHub na URL inaonekana kama hii

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

Nitaita anwani hii kwa urahisi <URL рСпозитория>.

Mabano ya pembe kama <Ρ‚ΡƒΡ‚> itamaanisha kuwa lazima ubadilishe usemi kama huo na thamani inayofaa.

Hakikisha kwamba Vitendo vya GitHub imejumuishwa kwa hazina hii ya kozi. Ikiwa hazijawezeshwa, tafadhali ziwezeshe kwa kubofya kitufe kikubwa katikati ya ukurasa, ambacho unaweza kupata kwa kubofya Vitendo kwenye kiolesura cha GitHub.

Hutaweza kukamilisha kozi kufuatia maagizo yangu ikiwa Vitendo vya GitHub havijawezeshwa.

Hali za kawaida na ushirikiano unaoendelea

Unaweza kutumia uwezo wa GitHub kila wakati kutoa Markdown ili kuona hali ya sasa ya orodha tunayounda hapa.

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

Kuhusu majibu

Ingawa njia bora ya kukamilisha kozi hii ni kuifanya wewe mwenyewe, unaweza kuwa na ugumu fulani.

Ikiwa unahisi kuwa huelewi nini cha kufanya na huwezi kuendelea, unaweza kuangalia kwenye thread solution, ambayo iko kwenye hazina yako ya kuanza.
Tafadhali usichanganye solution Π² master wakati wa kozi. Unaweza kutumia tawi hili kujua la kufanya, au kulinganisha nambari yako na ya mwandishi, kwa kutumia uwezo wote ambao Git inatupa. Ikiwa umepotea kabisa, unaweza kubadilisha kabisa tawi lako master kwenye tawi solution na kisha uweke upya saraka yako ya kufanya kazi kwa hatua ya kozi unayohitaji.

Tumia hii tu ikiwa unahitaji kweli

Weka nambari yako ya kuthibitisha

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

Amri hizi

  • badilisha jina master Π² master-backup;
  • badilisha jina solution Π² master;
  • angalia tawi jipya master na uandike upya yaliyomo kwenye saraka ya kazi;
  • Unda tawi la "suluhisho" kutoka kwa "bwana" (ambalo lilikuwa "suluhisho") ikiwa utahitaji tawi la "suluhisho" katika siku zijazo.

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

Baada ya hatua hizi unaweza kutumia git log master ili kujua ni ahadi gani unahitaji.
Unaweza kuweka upya saraka yako ya kufanya kazi kwa ahadi hii kama hii:

git reset --hard <the SHA you need>

Ikiwa umefurahiya matokeo, wakati fulani utahitaji kuchapisha toleo lako la hazina kwenye hazina ya mbali. Usisahau kutaja wazi tawi la mbali unapofanya hivi.

git push --force origin master

Tafadhali kumbuka kuwa tunatumia git push --force. Haiwezekani kwamba utataka kufanya hivi mara nyingi sana, lakini tuna hali maalum hapa na mtumiaji mmoja wa hazina ambaye, kwa kuongezea, anaelewa anachofanya.

Kuanza kufanya kazi

Hali za kawaida na ushirikiano unaoendelea

Wacha tuanze kuandaa orodha yetu ya hatua za CI. Kwa kawaida ungeanza hatua hii kwa kuangalia toleo la hivi punde la msimbo kutoka hazina ya mbali, lakini bado hatuna hazina ya ndani, kwa hivyo tunaiiga kutoka kwa ile ya mbali badala yake.

️ Kazi: sasisha hazina ya ndani, unda tawi kutoka master, anza kufanya kazi

  1. Funga hazina ya kozi kutoka <URL рСпозитория>.
  2. Endesha npm install katika saraka ya hazina ya kozi; Tunaihitaji ili kusakinisha Jest, ambayo tunaitumia kufanya majaribio.
  3. Unda tawi na uipe jina feature. Badili hadi kwenye uzi huu.
  4. Ongeza nambari ya jaribio kwa ci.test.js kati ya maoni kuniuliza nifanye hivi.

    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. Ongeza maandishi na hatua 4 za kwanza kwenye faili 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.  

    ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

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

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

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

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

Unda ahadi kwenye tawi jipya, jenga na ujaribu ndani ya nchi

Tutaweka majaribio ya kufanya kabla ya kufanya, na kisha kutekeleza nambari.

Matukio ya kawaida wakati majaribio yanaendeshwa kiotomatiki

  • Ndani ya nchi:
    • Kuendelea au kwa kukabiliana na mabadiliko sahihi ya kanuni;
    • Unapohifadhi (kwa lugha zilizotafsiriwa au zilizokusanywa na JIT);
    • Wakati wa kusanyiko (wakati mkusanyiko unahitajika);
    • Juu ya ahadi;
    • Wakati wa kuchapisha kwenye hazina iliyoshirikiwa.

  • Kwenye seva ya ujenzi au mazingira ya ujenzi:
    • Wakati msimbo unachapishwa kwa tawi la kibinafsi/hazina.
    • Msimbo katika mazungumzo haya unajaribiwa.
    • Matokeo yanayoweza kutokea ya muunganisho yanajaribiwa (kawaida na master).
    • Kama hatua ya ujumuishaji endelevu/bomba la uwasilishaji endelevu

Kwa kawaida, kadiri kikundi cha majaribio kinavyofanya kazi kwa haraka, ndivyo unavyoweza kumudu kukiendesha mara nyingi zaidi. Usambazaji wa hatua ya kawaida unaweza kuonekana kama hii.

  • Vipimo vya kitengo cha haraka - wakati wa kujenga, katika bomba la CI
  • Majaribio ya vipimo vya polepole, sehemu ya haraka na majaribio ya ujumuishaji - kwa ahadi, katika bomba la CI
  • Vipimo vya polepole vya sehemu na ujumuishaji - kwenye bomba la CI
  • Upimaji wa usalama, upimaji wa upakiaji na majaribio mengine ya muda au ya gharama kubwa - katika mabomba ya CI/CD, lakini tu katika hali/hatua/mabomba fulani ya muundo, kwa mfano, wakati wa kuandaa mgombeaji wa toleo au wakati wa kukimbia mwenyewe.

️ Kazi

Ninapendekeza kuendesha majaribio kwa mikono kwanza kwa kutumia amri npm test. Baada ya hapo, wacha tuongeze ndoano ya git ili kuendesha majaribio yetu kwa kujitolea. Kuna mtego mmoja: Kulabu za Git hazizingatiwi kama sehemu ya hazina na kwa hivyo haziwezi kutengenezwa kutoka kwa GitHub pamoja na vifaa vingine vya kozi. Ili kufunga ndoano unahitaji kukimbia install_hook.sh au nakili faili repo/hooks/pre-commit kwa saraka ya ndani .git/hooks/.
Unapojitolea, utaona kwamba majaribio yanaendeshwa na wanaangalia ili kuona ikiwa maneno fulani yapo kwenye orodha.

  1. Endesha majaribio kwa mikono kwa kuendesha amri npm test kwenye folda yako ya hazina ya kozi. Thibitisha kuwa majaribio yamekamilika.
  2. Weka ndoano ya ahadi (ndoano ya kujitolea kabla) kwa kukimbia install_hook.sh.
  3. Toa mabadiliko yako kwenye hazina yako ya karibu.
  4. Hakikisha majaribio yanaendeshwa kabla ya kufanya.

Hifadhi yako inapaswa kuonekana kama hii baada ya kufuata hatua hizi.
Hali za kawaida na ushirikiano unaoendelea

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

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

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

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

Chapisha msimbo kwenye hazina ya mbali au tawi la mbali

Pindi tu zinapomaliza kufanya kazi ndani ya nchi, wasanidi kwa kawaida hufanya msimbo wao upatikane hadharani ili hatimaye uweze kuunganishwa na umma. Kwa GitHub, hii kawaida hupatikana kwa kuchapisha kazi hiyo kwa nakala ya kibinafsi ya hazina (uma ya kibinafsi) au tawi la kibinafsi.

  • Kwa uma, msanidi programu hutengeneza hazina iliyoshirikiwa ya mbali, na kuunda nakala yake ya kibinafsi ya mbali, inayojulikana pia kama uma. Kisha huunganisha hazina hii ya kibinafsi kufanya kazi nayo ndani. Wakati kazi imekamilika na ahadi zinafanywa, anazisukuma kwenye uma wake, ambapo zinapatikana kwa wengine na zinaweza kuunganishwa kwenye hifadhi ya kawaida. Njia hii hutumiwa sana katika miradi ya chanzo wazi kwenye GitHub. Inatumika pia katika kozi yangu ya juu [Kazi ya Timu na CI na Git] (http://devops.redpill.solutions/).
  • Njia nyingine ni kutumia hazina moja tu ya mbali na kuhesabu tawi tu master hazina iliyoshirikiwa "iliyolindwa". Katika hali hii, wasanidi programu binafsi huchapisha msimbo wao kwenye matawi ya hazina ya mbali ili wengine waweze kuangalia msimbo huu, ikiwa kila kitu kiko sawa, iunganishe na master hazina iliyoshirikiwa.

Katika kozi hii mahususi, tutakuwa tukitumia mtiririko wa kazi unaotumia matawi.

Wacha tuchapishe nambari yetu.

️ Kazi

  • Chapisha mabadiliko kwenye tawi la mbali lenye jina sawa na tawi lako linalofanya kazi

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

git push --set-upstream origin feature

Unda ombi la kuvuta

Unda ombi la kuvuta na kichwa Mapitio ya hatua. Sakinisha feature kama "tawi la kichwa" na master kama "tawi la msingi".

Hakikisha umesakinisha master katika yake uma hazina Kama "tawi la msingi", sitajibu maombi ya mabadiliko kwenye hazina ya vifaa vya kozi.

Katika GitHub lingo, "tawi la msingi" ni tawi ambalo unaweka kazi yako, na "tawi la kichwa" ni tawi lililo na mabadiliko yaliyopendekezwa.

Jadili mabadiliko, ongeza ahadi mpya wakati mjadala unaendelea

Vuta ombi (PR)

Vuta ombi (PR) ni njia ya kujadili na kuandika msimbo, pamoja na kufanya uhakiki wa kanuni. Maombi ya kuvuta yanaitwa baada ya njia ya jumla ya kuunganisha mabadiliko ya mtu binafsi kwenye msimbo wa jumla. Kwa kawaida, mtu hutengeneza hazina rasmi ya mbali ya mradi na kufanya kazi kwenye msimbo ndani ya nchi. Baada ya hayo, anaweka nambari hiyo kwenye hazina yake ya kibinafsi na kuwauliza wale wanaohusika na hazina rasmi kuchukua(kuvuta) nambari yake kwenye hazina zao za ndani, ambapo wanakagua na ikiwezekana kujumuisha(kuunganisha) yake. Dhana hii pia inajulikana kwa majina mengine, kwa mfano, unganisha ombi.

Sio lazima utumie kipengele cha ombi la kuvuta la GitHub au majukwaa kama hayo. Timu za maendeleo zinaweza kutumia mbinu nyingine za mawasiliano, ikiwa ni pamoja na mawasiliano ya ana kwa ana, simu za sauti au barua pepe, lakini bado kuna sababu kadhaa za kutumia maombi ya kuvuta kwa mtindo wa mijadala. Hapa kuna baadhi yao:

  • majadiliano yaliyopangwa kuhusiana na mabadiliko maalum ya kanuni;
  • kama mahali pa kutazama maoni kuhusu kazi inayoendelea kutoka kwa waendeshaji otomatiki na wenzao;
  • urasimishaji wa mapitio ya kanuni;
  • ili baadaye uweze kujua sababu na mazingatio nyuma ya hii au kipande cha msimbo.

Kwa kawaida huunda ombi la kuvuta unapohitaji kujadili kitu au kupata maoni. Kwa mfano, ikiwa unafanyia kazi kipengele ambacho kinaweza kutekelezwa kwa zaidi ya njia moja, unaweza kuunda ombi la kuvuta kabla ya kuandika mstari wa kwanza wa msimbo ili kushiriki mawazo yako na kujadili mipango yako na washirika wako. Ikiwa kazi ni rahisi, ombi la kuvuta linafunguliwa wakati kitu tayari kimefanywa, kimejitolea, na kinaweza kujadiliwa. Katika baadhi ya matukio, unaweza kutaka kufungua PR kwa sababu za udhibiti wa ubora pekee: kufanya majaribio ya kiotomatiki au kuanzisha ukaguzi wa misimbo. Chochote utakachoamua, usisahau @ kutaja watu ambao unataka idhini yao katika ombi lako la kuvuta.

Kwa kawaida, wakati wa kuunda PR, unafanya zifuatazo.

  • Onyesha unachopendekeza kubadilisha na wapi.
  • Andika maelezo ukieleza madhumuni ya mabadiliko. Unaweza kutaka:
    • ongeza kitu chochote muhimu ambacho hakiko wazi kutoka kwa msimbo, au kitu muhimu kwa kuelewa muktadha, kama vile #bugs na nambari za kufanya;
    • @mtaja mtu yeyote unayetaka kuanza kufanya naye kazi, au unaweza @kumtaja kwenye maoni baadaye;
    • waombe wenzako wakusaidie kwa jambo fulani au uangalie jambo mahususi.

Mara tu unapofungua PR, majaribio yaliyosanidiwa kufanya kazi katika hali kama hizi hutekelezwa. Kwa upande wetu, hii itakuwa seti sawa ya vipimo ambavyo tuliendesha ndani ya nchi, lakini katika mradi halisi kunaweza kuwa na vipimo vya ziada na hundi.

Tafadhali subiri wakati majaribio yanakamilika. Unaweza kuona hali ya majaribio chini ya majadiliano ya PR kwenye kiolesura cha GitHub. Endelea wakati majaribio yamekamilika.

️ Ongeza dokezo kuhusu kubahatisha kwa orodha ya hatua za CI

Orodha iliyotumiwa katika kozi hii ni ya kiholela na ya kibinafsi, tunapaswa kuongeza maelezo kuhusu hili.

️ Kazi: unda ombi la kuvuta maoni haya

  1. Badilisha hadi tawi master.
  2. Unda tawi linaloitwa bugfix.
  3. Ongeza maandishi hadi mwisho wa faili 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. Fanya mabadiliko.
  5. Chapisha thread bugfix kwa hazina ya mbali.
  6. Unda ombi la kuvuta lililopewa jina Kuongeza maoni na tawi la kichwa bugfix na tawi la msingimaster.

Hakikisha umesakinisha master katika yake uma hazina Kama "tawi la msingi", sitajibu maombi ya mabadiliko kwenye hazina ya vifaa vya kozi.

Hivi ndivyo hazina yako inapaswa kuonekana kama.
Hali za kawaida na ushirikiano unaoendelea

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ 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 ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Idhinisha ombi la kuvuta "Kuongeza maoni"

️ Kazi

  1. Unda ombi la kuvuta.
  2. Bonyeza "Unganisha ombi la kuvuta".
  3. Bonyeza "Thibitisha kuunganisha".
  4. Bofya "Futa tawi", hatuhitaji tena.

Huu ni mchoro wa ahadi baada ya kuunganishwa.
Hali za kawaida na ushirikiano unaoendelea

️ Endelea kufanya kazi na kuongeza vipimo

Kushirikiana kwenye ombi la kuvuta mara nyingi husababisha kazi ya ziada. Kawaida haya ni matokeo ya ukaguzi wa msimbo au majadiliano, lakini katika kozi yetu tutaiga hii kwa kuongeza vitu vipya kwenye orodha yetu ya hatua za CI.

Ujumuishaji unaoendelea kwa kawaida huhusisha ufunikaji wa majaribio. Mahitaji ya chanjo ya jaribio hutofautiana na kwa kawaida hupatikana katika hati inayoitwa kitu kama "miongozo ya michango". Tutaiweka rahisi na kuongeza jaribio kwa kila mstari katika orodha yetu ya ukaguzi.

Wakati wa kutekeleza kazi, jaribu kufanya majaribio kwanza. Ikiwa umewekwa kwa usahihi pre-commit ndoano mapema, mtihani mpya ulioongezwa utaendeshwa, utashindwa, na hakuna kitakachofanywa. Kumbuka kuwa hivi ndivyo tunavyojua kwamba majaribio yetu yanajaribu kitu. Inafurahisha, ikiwa tulianza na nambari kabla ya majaribio, kupitisha majaribio kunaweza kumaanisha kuwa nambari ilifanya kazi kama inavyotarajiwa, au kwamba majaribio hayakuwa yakijaribu chochote. Zaidi ya hayo, ikiwa hatungeandika majaribio hayo hapo awali, tungeweza kuwasahau kabisa, kwa kuwa hakuna kitu ambacho kingetukumbusha.

Maendeleo Yanayoendeshwa na Mtihani (TDD)

TDD inapendekeza uandike majaribio kabla ya msimbo. Mtiririko wa kawaida wa kazi kwa kutumia TDD inaonekana kama hii.

  1. Ongeza mtihani.
  2. Fanya majaribio yote na uhakikishe kuwa jaribio jipya halifaulu.
  3. Andika msimbo.
  4. Fanya vipimo, hakikisha vipimo vyote vinapita.
  5. Rekebisha msimbo wako.
  6. Rudia.

Kwa sababu matokeo ya majaribio ambayo hayakufaulu kawaida huonyeshwa kwa rangi nyekundu, na yale yaliyofaulu kawaida huonyeshwa kwa kijani, mzunguko huo pia hujulikana kama kiashiria-kijani-nyekundu.

️ Kazi

Kwanza, jaribu kufanya majaribio na kuwaacha washindwe, kisha ongeza na utoe maandishi ya orodha ya hatua ya CI yenyewe. Utaona kwamba vipimo vinapita ("kijani").
Kisha uchapishe nambari mpya kwenye hazina ya mbali na uangalie majaribio yanayoendeshwa kwenye kiolesura cha GitHub chini ya majadiliano ya ombi la kuvuta na sasisho la hali ya PR.

  1. Badilisha hadi tawi feature.
  2. Ongeza majaribio haya kwa ci.test.js baada ya simu ya mwisho 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. Jaribu kufanya majaribio. Kama pre-commit ndoano imewekwa, jaribio la kujitolea litashindwa.
  4. Kisha ongeza maandishi haya kwa 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. Fanya na ufanye mabadiliko ndani ya nchi.
  6. Chapisha mabadiliko kwenye tawi feature.

Unapaswa sasa kuwa na kitu kama hiki
Hali za kawaida na ushirikiano unaoendelea

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹


# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π° Π²Π΅Ρ‚ΠΊΡƒ 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

Unganisha migogoro

Nenda kwa Badilisha Ombi Mapitio ya hatua.

Ingawa hatukufanya chochote kibaya na majaribio ya nambari yetu yamepita, bado hatuwezi kuunganisha tawi feature ΠΈ master. Ni kwa sababu thread nyingine bugfix iliunganishwa na master tulipokuwa tukifanyia kazi hii PR.
Hii inaunda hali ambapo tawi la mbali master ina toleo jipya zaidi kuliko lile tuliloweka msingi wa tawi feature. Kwa sababu hii hatuwezi tu kurudisha nyuma HEAD master hadi mwisho wa thread feature. Katika hali hii, tunahitaji ama kuunganisha au kuomba ahadi feature weka upya master. GitHub inaweza kweli kuunganisha kiotomatiki ikiwa hakuna migogoro. Ole, katika hali yetu, matawi yote mawili yana mabadiliko ya kushindana kwenye faili ci.md. Hali hii inajulikana kama mzozo wa kuunganisha, na tunahitaji kuitatua sisi wenyewe.

Unganisha au uweke upya

Kuunganisha

  • Huunda ahadi ya ziada ya kuunganisha na kuhifadhi historia ya kazi.
    • Huhifadhi ahadi za awali za matawi na mihuri yao ya awali ya nyakati na waandishi.
    • Huhifadhi SHA ya ahadi na viungo kwao katika mijadala ya ombi la mabadiliko.
  • Inahitaji utatuzi wa migogoro ya mara moja.
  • Hufanya hadithi isiwe ya mstari.
    • Hadithi inaweza kuwa ngumu kusoma kwa sababu ya idadi kubwa ya matawi (kukumbusha kebo ya IDE).
    • Hufanya utatuzi wa kiotomatiki kuwa mgumu zaidi, k.m. git bisect haifai sana - itapata tu ahadi ya kuunganisha.

Rudisha tena

  • Marudio hujitolea kutoka kwa tawi la sasa juu ya tawi la msingi moja baada ya jingine.
    • Ahadi mpya zilizo na SHA mpya zinatolewa, na kusababisha ahadi katika GitHub kuendana na maombi ya asili ya kuvuta, lakini sio maoni yanayolingana.
    • Ahadi zinaweza kuunganishwa na kurekebishwa katika mchakato, au hata kuunganishwa kuwa moja.
  • Mizozo mingi inaweza kuhitaji kutatuliwa.
  • Inakuruhusu kudumisha hadithi ya mstari.
    • Hadithi inaweza kuwa rahisi kusoma mradi sio ndefu sana bila sababu nzuri.
    • Utatuzi otomatiki na utatuzi ni rahisi kidogo: hufanya iwezekanavyo git bisect, inaweza kufanya urejeshaji wa kiotomatiki kuwa wazi na kutabirika zaidi.
  • Inahitaji kuchapisha tawi lililo na ahadi zilizohamishwa na bendera --force inapotumiwa na maombi ya kuvuta.

Kwa kawaida, timu hukubali kutumia mbinu sawa kila wakati zinapohitaji kuunganisha mabadiliko. Hii inaweza kuwa muunganisho "safi" au ahadi "safi" juu, au kitu katikati, kama vile kufanya ahadi ya juu kwa maingiliano(git rebase -i) ndani ya nchi kwa matawi ambayo hayajachapishwa kwenye hazina ya umma, lakini yanaunganishwa kwa matawi ya "umma".

Hapa tutatumia kuunganisha.

️ Kazi

  1. Hakikisha msimbo uko katika tawi la karibu master imesasishwa kutoka kwa hifadhi ya mbali.
  2. Badilisha hadi tawi feature.
  3. Anzisha unganisho na tawi master. Mzozo wa kuunganisha kwa sababu ya mabadiliko shindani ya ci.md.
  4. Tatua mzozo ili orodha yetu ya hatua za CI na dokezo kuuhusu zibaki kwenye maandishi.
  5. Chapisha ahadi ya kuunganisha kwa tawi la mbali feature.
  6. Angalia hali ya ombi la kuvuta kwenye GitHub UI na usubiri hadi muunganisho utatuliwe.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π² локальноС Π²Π΅Ρ‚ΠΊΠ΅ `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, Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ° слияниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

Kazi nzuri!

Umemaliza na orodha na sasa unahitaji kuidhinisha ombi la kuvuta ndani master.

️ Kazi: Idhinisha ombi la kuvuta "Mapitio ya hatua"

  1. Fungua ombi la kuvuta.
  2. Bonyeza "Unganisha ombi la kuvuta".
  3. Bonyeza "Thibitisha kuunganisha".
  4. Bonyeza "Futa tawi" kwani hatuitaji tena.

Hili ni hazina yako kwa sasa
Hali za kawaida na ushirikiano unaoendelea

Hitilafu ya bidhaa

Inasemekana kwamba β€œkupima kunaweza kutumiwa kuonyesha kuwepo kwa makosa, lakini kamwe kutoonyesha kutokuwepo kwao.” Ingawa tulikuwa na majaribio na hawakutuonyesha makosa, mdudu wa hila aliingia katika uzalishaji.

Katika hali kama hii, tunahitaji kutunza:

  • ni nini kinachotumika katika uzalishaji;
  • kanuni katika thread master na hitilafu, ambayo watengenezaji wanaweza kuanza kazi mpya.

Je, nirudishe nyuma au nirekebishe katika toleo linalofuata?

Kurudisha nyuma ni mchakato wa kupeleka toleo zuri la awali linalojulikana kwa uzalishaji na kurejesha ahadi zilizo na hitilafu. "Kurekebisha mbele" ni nyongeza ya kurekebisha master na kupeleka toleo jipya haraka iwezekanavyo. Kwa sababu API na miundo ya hifadhidata hubadilika jinsi msimbo unavyotumwa kwa uzalishaji, uwasilishaji unaoendelea na ufunikaji mzuri wa majaribio, kurejesha nyuma kwa kawaida ni ngumu zaidi na hatari kuliko kuirekebisha katika toleo linalofuata.

Kwa kuwa kurudi nyuma hakubeba hatari yoyote kwa upande wetu, tutaenda kwa njia hii, kwa sababu inaturuhusu

  • kurekebisha kosa kwenye bidhaa haraka iwezekanavyo;
  • weka kanuni ndani master mara moja inafaa kwa kuanza kazi mpya.

️ Kazi

  1. Badilisha hadi tawi master kienyeji.
  2. Sasisha hazina ya ndani kutoka kwa hazina ya mbali.
  3. Rejesha ahadi ya kuunganisha PR Mapitio ya hatua Π² master.
  4. Chapisha mabadiliko kwenye hazina ya mbali.

Hii ni historia ya hazina iliyo na ahadi ya kuunganisha iliyorejeshwa
Hali za kawaida na ushirikiano unaoendelea

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

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

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

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

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

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

️ Jipime

Hakikisha kwamba ci.md haina tena maandishi "mdudu mjanja" baada ya kurudisha ahadi ya kuunganisha.

Rekebisha orodha ya hatua za CI na uirudishe kwa bwana

Tumerejesha kabisa ahadi ya kuunganisha ya tawi. feature. Habari njema ni kwamba sasa hatuna makosa master. Habari mbaya ni kwamba orodha yetu ya thamani ya hatua za ujumuishaji endelevu pia imetoweka. Kwa hivyo, kwa kweli, tunahitaji kutumia urekebishaji kwa ahadi kutoka feature na kuwarudisha kwa master pamoja na kurekebisha.

Tunaweza kushughulikia shida kwa njia tofauti:

  • rudisha ahadi ambayo inatengua unganisho feature с master;
  • kuhama ahadi kutoka kwa zamani feature.

Timu tofauti za maendeleo hutumia mbinu tofauti katika kesi hii, lakini tutahamisha ahadi muhimu kwa tawi tofauti na kuunda ombi tofauti la kuvuta kwa tawi hili jipya.

️ Kazi

  1. Unda thread inayoitwa feature-fix na kubadili kwake.
  2. Hamisha ahadi zote kutoka kwa tawi la zamani feature kwa thread mpya. Tatua migogoro ya kuunganisha iliyotokea wakati wa uhamishaji.

    Hali za kawaida na ushirikiano unaoendelea

  3. Ongeza jaribio la urejeshaji kwa ci.test.js:

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

  4. Fanya majaribio ndani yako ili kuhakikisha kuwa hayashindwi.
  5. Ondoa maandishi "na mdudu mjanja" ndani ci.md.
  6. Ongeza mabadiliko ya jaribio na mabadiliko ya orodha ya hatua kwenye faharasa na uyafanye.
  7. Chapisha tawi kwenye hazina ya mbali.

Unapaswa kuishia na kitu kama hiki:
Hali za kawaida na ushirikiano unaoendelea

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ 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

Unda ombi la kuvuta.

Unda ombi la kuvuta na kichwa Kurekebisha kipengele. Sakinisha feature-fix kama "tawi la kichwa" na master kama "tawi la msingi".
Tafadhali subiri wakati majaribio yanakamilika. Unaweza kuona hali ya majaribio chini ya majadiliano ya PR.

Hakikisha umesakinisha master katika yake uma hazina Kama "tawi la msingi", sitajibu maombi ya mabadiliko kwenye hazina ya vifaa vya kozi.

Idhinisha ombi la kuvuta "Kurekebisha kipengele"

Asante kwa kusahihisha! Tafadhali idhinisha mabadiliko kwa master kutoka kwa ombi la kuvuta.

️ Kazi

  1. Bonyeza "Unganisha ombi la kuvuta".
  2. Bonyeza "Thibitisha kuunganisha".
  3. Bonyeza "Futa tawi" kwani hatuitaji tena.

Hii ndio unapaswa kuwa nayo kwa sasa.
Hali za kawaida na ushirikiano unaoendelea

Hongera!

Umekamilisha hatua zote ambazo kwa kawaida watu huchukua wakati wa ujumuishaji unaoendelea.

Ukigundua matatizo yoyote kwenye kozi au unajua jinsi ya kuiboresha, tafadhali fungua tatizo hazina zilizo na vifaa vya kozi. Kozi hii pia ina toleo la mwingiliano kutumia GitHub Learning Lab kama jukwaa.

Chanzo: mapenzi.com

Kuongeza maoni