Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

НаучихтС Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π½Π° Git, Π½ΠΎ искатС Π΄Π° си прСдставитС ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π°Ρ‚Π° интСграция (CI) Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² дСйствитСлност? Или ΠΌΠΎΠΆΠ΅ Π±ΠΈ искатС Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΈΡ‚Π΅ си дСйности? Π’ΠΎΠ·ΠΈ курс Ρ‰Π΅ Π²ΠΈ Π΄Π°Π΄Π΅ практичСски умСния Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° GitHub. Π’ΠΎΠ·ΠΈ курс Π½Π΅ Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° бъдС ΡΡŠΠ²Π΅Ρ‚Π½ΠΈΠΊ, Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅; Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Ρ‰Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ ΡΡŠΡ‰ΠΈΡ‚Π΅ дСйствия, ΠΊΠΎΠΈΡ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ правят Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π³ΠΎ правят. Π©Π΅ обясня тСорията, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚Π΅ ΠΏΡ€Π΅Π· ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈ.

И ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ ΠΏΡ€Π°Π²ΠΈΠΌ?

Π”ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π΅Π΄Π²Π°ΠΌΠ΅, постСпСнно Ρ‰Π΅ създадСм списък с Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ CI ΡΡ‚ΡŠΠΏΠΊΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ чудСсСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ списък. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, Π½ΠΈΠ΅ Ρ‰Π΅ създадСм списък с дСйствия, ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ правят Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈ прост Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ тСстовС, Π·Π° Π΄Π° Π΄ΠΎΠ±Π»ΠΈΠΆΠΈΠΌ нашия CI процСс Π΄ΠΎ рСалния.

Π’ΠΎΠ·ΠΈ GIF схСматично ΠΏΠΎΠΊΠ°Π·Π²Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ във Π²Π°ΡˆΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π΅Π΄Π²Π°Ρ‚Π΅ Π² курса. ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‚ΡƒΠΊ няма Π½ΠΈΡ‰ΠΎ слоТно ΠΈ само Π½Π°ΠΉ-Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ.

Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

Π©Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· слСднитС стандартни CI сцСнарии:

  • Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ функция;
  • ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ тСстовС Π·Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° качСството;
  • ИзпълнСниС Π½Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°;
  • Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΏΡ€ΠΈ сливанС Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ (ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° сливанС);
  • Π’ΡŠΠ·Π½ΠΈΠΊΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² производствСна срСда.

ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ Π½Π°ΡƒΡ‡ΠΈΡˆ?

Π©Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° слСднитС Π²ΡŠΠΏΡ€ΠΎΡΠΈ:

  • Какво Π΅ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция (CI)?
  • Какви Π²ΠΈΠ΄ΠΎΠ²Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ тСстовС сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² CI ΠΈ Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ дСйствия сС задСйстват?
  • Какво прСдставляват заявкитС Π·Π° изтСглянС ΠΈ ΠΊΠΎΠ³Π° са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ?
  • Какво Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, управлявана ΠΎΡ‚ тСстовС (TDD) ΠΈ ΠΊΠ°ΠΊΠ²Π° Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΌΡƒ с CI?
  • Врябва Π»ΠΈ Π΄Π° обСдиня ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π±Π°Π·ΠΈΡ€Π°ΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅?
  • Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π°Π·Π°Π΄ ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π² слСдващата вСрсия?

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°Ρ… Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ β€žΠ·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΡΠ½Π΅β€œ навсякъдС, Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ… Π΄Π° Π²ΡŠΡ€Π½Π° Ρ„Ρ€Π°Π·ΠΈ Π½Π° английски Π½Π° някои мСста, Π·Π° Π΄Π° намаля стСпСнта Π½Π° лудост Π² тСкста. Понякога Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ β€žΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡΡ‚ ΡΡƒΡ€ΠΆΠΈΠΊβ€œ ΠΊΠ°Ρ‚ΠΎ прСкрасния Π³Π»Π°Π³ΠΎΠ» β€žΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅β€œ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

Какво Π΅ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция?

ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция, ΠΈΠ»ΠΈ CI, Π΅ тСхничСска ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΏΡ€ΠΈ която всСки Ρ‡Π»Π΅Π½ Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° своя ΠΊΠΎΠ΄ Π² ΠΎΠ±Ρ‰ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠΎΠ½Π΅ вСднъТ Π½Π° Π΄Π΅Π½ ΠΈ получСният ΠΊΠΎΠ΄ трябва ΠΏΠΎΠ½Π΅ Π΄Π° бъдС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π±Π΅Π· Π³Ρ€Π΅ΡˆΠΊΠΈ.

Има разногласия относно Ρ‚ΠΎΠ·ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½

Π‘ΠΏΠΎΡ€Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ чСстотата Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅. Някои Ρ‚Π²ΡŠΡ€Π΄ΡΡ‚, Ρ‡Π΅ сливанСто Π½Π° ΠΊΠΎΠ΄ само вСднъТ Π½Π° Π΄Π΅Π½ Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π·Π° дСйствитСлно Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅. Π”Π°Π΄Π΅Π½ Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π΅ΠΊΠΈΠΏ, Π² ΠΊΠΎΠΉΡ‚ΠΎ всСки Π²Π·ΠΈΠΌΠ° Π½ΠΎΠ² ΠΊΠΎΠ΄ сутрин ΠΈ Π³ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° вСднъТ Π²Π΅Ρ‡Π΅Ρ€Ρ‚Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²ΡŠΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС смята, Ρ‡Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° вСднъТ Π½Π° Π΄Π΅Π½ Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ, спСцифично ΠΈ подходящо Π·Π° Π΅ΠΊΠΈΠΏΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ.

Π”Ρ€ΡƒΠ³ΠΎ Π²ΡŠΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΅, Ρ‡Π΅ C++ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ СдинствСният Π΅Π·ΠΈΠΊ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, ΠΈ простото изискванС Π½Π° асСмблиранС Π±Π΅Π· Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΊΠ°Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½ Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π΅ слабо. Някои Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ тСстовС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ тСстовС, изпълнявани Π»ΠΎΠΊΠ°Π»Π½ΠΎ) ΡΡŠΡ‰ΠΎ трябва Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠ°Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° общността сС Π΄Π²ΠΈΠΆΠΈ към Ρ‚ΠΎΠ²Π° Π΄Π° станС изискванС ΠΈ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ β€žbuild + unit testsβ€œ вСроятно Ρ‰Π΅ станС ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π°ΠΊΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅.

ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ снабдяванС (ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° доставка, CD), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ изисква ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° освобоТдаванС слСд всСки ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ».

Бписък със ΡΡ‚ΡŠΠΏΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° курса

  1. Π˜Π·Ρ‚Π΅Π³Π»Π΅Ρ‚Π΅ Π½Π°ΠΉ-новия ΠΊΠΎΠ΄. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½ ΠΎΡ‚ master. Π—Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°.
  2. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° вашия Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½. Π˜Π·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ ΠΈ тСствайтС Π»ΠΎΠΊΠ°Π»Π½ΠΎ. пропуск? ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към слСдващата ΡΡ‚ΡŠΠΏΠΊΠ°. ΠŸΡ€ΠΎΠ²Π°Π»? ΠŸΠΎΠΏΡ€Π°Π²Π΅Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈΠ»ΠΈ тСстовС ΠΈ ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ.
  3. Π˜Π·ΠΏΡ€Π°Ρ‚Π΅Ρ‚Π΅ към Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΠΊΠ»ΠΎΠ½.
  4. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС. ΠžΠ±ΡΡŠΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΎΡ‰Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ дискусията ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°. НакарайтС тСстовСтС Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ‚ Π½Π° ΠΊΠ»ΠΎΠ½Π° Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  5. ΠšΠΎΠΌΠΈΡ‚ΠΈ Π·Π° сливанС/ΠΏΡ€Π΅Π±Π°Π·ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ главния. НакарайтС тСстовСтС Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ‚ Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ сливанСто.
  6. ВнСдряванС ΠΎΡ‚ ΠΊΠ»ΠΎΠ½Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π΄ΠΎ производството.
  7. Ако всичко Π΅ Π½Π°Ρ€Π΅Π΄ Π² продукцията Π·Π° извСстСн ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² основния.

Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

️ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ правилния софтуСр

Π—Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ курс Ρ‰Π΅ Π²ΠΈ трябва Node.js ΠΈ Git ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ всСки Git ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π½ΠΎ Π°Π· Ρ‰Π΅ прСдоставя само ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° командния Ρ€Π΅Π΄.

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ инсталиран Git ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° командния Ρ€Π΅Π΄

Ако всС ΠΎΡ‰Π΅ няматС Git ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° командния Ρ€Π΅Π΄, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ инструкции Π·Π° инсталиранС Ρ‚ΡƒΠΊ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ

Π©Π΅ трябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π»ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ (Ρ„ΠΎΡ€ΠΊ) шаблонно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с ΠΊΠΎΠ΄ Π·Π° курса Π½Π° GitHub. НСка сС съгласим Π΄Π° Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° Π»ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° курсовС.

Π‘Π²ΡŠΡ€ΡˆΠ΅Π½? Ако Π½Π΅ стС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ настройкитС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π²Π°ΡˆΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° курсовС Π½Π°ΠΉ-вСроятно Ρ‰Π΅ бъдС ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΎ continuous-integration-team-scenarios-students, Ρ‚ΠΎΠΉ сС Π½Π°ΠΌΠΈΡ€Π° във вашия Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π² GitHub ΠΈ URL Π°Π΄Ρ€Π΅ΡΡŠΡ‚ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°

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

ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‰Π΅ сС обадя Π½Π° Ρ‚ΠΎΠ·ΠΈ адрСс <URL рСпозитория>.

ΠͺΠ³Π»ΠΎΠ²ΠΈ скоби ΠΊΠ°Ρ‚ΠΎ <Ρ‚ΡƒΡ‚> Ρ‰Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ трябва Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡŠΠ² ΠΈΠ·Ρ€Π°Π· с подходящата стойност.

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ GitHub дСйствия Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π·Π° Ρ‚ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° курсовС. Ако Π½Π΅ са Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ, моля, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ Π³ΠΈ, ΠΊΠ°Ρ‚ΠΎ Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ голСмия Π±ΡƒΡ‚ΠΎΠ½ Π² срСдата Π½Π° страницата, Π΄ΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° стигнСтС, ΠΊΠ°Ρ‚ΠΎ Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ДСйствия Π² интСрфСйса Π½Π° GitHub.

Няма Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ курса, ΠΊΠ°Ρ‚ΠΎ слСдватС ΠΌΠΎΠΈΡ‚Π΅ инструкции, Π°ΠΊΠΎ дСйствията Π½Π° GitHub Π½Π΅ са Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ.

Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

Π’ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ способността Π½Π° GitHub Π΄Π° Ρ€Π΅Π½Π΄ΠΈΡ€Π° Markdown, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° списъка, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡΡ‚Π°Π²ΡΠΌΠ΅ Ρ‚ΡƒΠΊ

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

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π°ΠΉ-добрият Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ курс Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ сами, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ извСстни затруднСния.

Ако смятатС, Ρ‡Π΅ Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π² Ρ‚Π΅ΠΌΠ°Ρ‚Π° solution, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ във Π²Π°ΡˆΠ΅Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
Моля, Π½Π΅ обСдинявайтС solution Π² master ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° курса. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΊΠ»ΠΎΠ½, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π΄Π° сравнитС вашия ΠΊΠΎΠ΄ с Ρ‚ΠΎΠ·ΠΈ Π½Π° Π°Π²Ρ‚ΠΎΡ€Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ всички Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Git Π½ΠΈ Π΄Π°Π²Π°. Ако стС напълно ΠΈΠ·Π³ΡƒΠ±Π΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ напълно Π΄Π° смСнитС своя ΠΊΠ»ΠΎΠ½ master Π½Π° ΠΊΠ»ΠΎΠ½ solution ΠΈ слСд Ρ‚ΠΎΠ²Π° Π½ΡƒΠ»ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° си дирСктория Π΄ΠΎ ΡΡ‚ΡŠΠΏΠΊΠ°Ρ‚Π° Π½Π° курса, ΠΎΡ‚ която сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅.

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ²Π° само Π°ΠΊΠΎ наистина ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π½Π΅Π³ΠΎ

АнгаТирайтС своя ΠΊΠΎΠ΄

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

Π’Π΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

  • ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΌ master Π² master-backup;
  • ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΌ solution Π² master;
  • каса Π΄ΠΎ Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½ master ΠΈ ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° дирСктория;
  • Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½ "Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅" ΠΎΡ‚ "Π³Π»Π°Π²Π΅Π½" (ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ бСшС "Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅"), Π² случай Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΊΠ»ΠΎΠ½ "Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅" Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.

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

Π‘Π»Π΅Π΄ Ρ‚Π΅Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ git log master Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠΉ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π°.
ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½ΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° си дирСктория към Ρ‚ΠΎΠ·ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

git reset --hard <the SHA you need>

Ако стС Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°, Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‰Π΅ трябва Π΄Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚Π΅ Π²Π°ΡˆΠ°Ρ‚Π° вСрсия Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. НС забравяйтС ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° посочитС отдалСчСния ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°.

git push --force origin master

Моля, ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ git push --force. Малко вСроятно Π΅ Π΄Π° искатС Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ чСсто, Π½ΠΎ Ρ‚ΡƒΠΊ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ спСцифичСн сцСнарий с Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠΎΠΉΡ‚ΠΎ освСн Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π°Π²ΠΈ.

Π—Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°

Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

НСка Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° ΡΡŠΡΡ‚Π°Π²ΡΠΌΠ΅ нашия списък с CI ΡΡ‚ΡŠΠΏΠΊΠΈ. ОбикновСно Π±ΠΈΡ…Ρ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Π»ΠΈ Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π½ΠΎ всС ΠΎΡ‰Π΅ нямамС Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ вмСсто Ρ‚ΠΎΠ²Π° Π³ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ.

️ Π—Π°Π΄Π°Ρ‡Π°: Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½ ΠΎΡ‚ master, Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° курса ΠΎΡ‚ <URL рСпозитория>.
  2. Ρ‚ΠΈΡ‡Π°ΠΌ npm install Π² дирСкторията Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° курса; Врябва Π½ΠΈ, Π·Π° Π΄Π° инсталирамС Jest, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° тСстовС.
  3. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½ ΠΈ Π³ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΉΡ‚Π΅ feature. ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°.
  4. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ тСстов ΠΊΠΎΠ΄ към ci.test.js ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠ΅ молят Π΄Π° направя Ρ‚ΠΎΠ²Π°.

    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. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ тСкст с ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 4 ΡΡ‚ΡŠΠΏΠΊΠΈ към Ρ„Π°ΠΉΠ»Π° 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 ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ ΠΈ тСствайтС Π»ΠΎΠΊΠ°Π»Π½ΠΎ

Π©Π΅ настроим тСстовСтС Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° сС Π°Π½Π³Π°ΠΆΠΈΡ€Π°ΠΌΠ΅, ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° Π°Π½Π³Π°ΠΆΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π°.

Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ сцСнарии, ΠΊΠΎΠ³Π°Ρ‚ΠΎ тСстовСтС сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ

  • На мСстно Π½ΠΈΠ²ΠΎ:
    • ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° подходящи ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°;
    • ΠŸΡ€ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ (Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ΠΈ ΠΈΠ»ΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ);
    • По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° асСмблиранС (ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° компилация);
    • ΠŸΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅;
    • ΠŸΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π² сподСлСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

  • На ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈΠ»ΠΈ срСда Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅:
    • ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π² Π»ΠΈΡ‡Π΅Π½ ΠΊΠ»ΠΎΠ½/Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
    • ΠšΠΎΠ΄ΡŠΡ‚ Π² Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ° сС тСства.
    • ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ сливанСто сС тСства (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ с master).
    • ΠšΠ°Ρ‚ΠΎ Π΅Ρ‚Π°ΠΏ Π½Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция/Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° доставка

ОбикновСно ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄Π°Π΄Π΅Π½ тСстов ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-чСсто ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° си ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅. Π’ΠΈΠΏΠΈΡ‡Π½ΠΎ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΅Ρ‚Π°ΠΏΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°.

  • Π‘ΡŠΡ€Π·ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ тСстовС - ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Π² CI ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€
  • Π‘Π°Π²Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ тСстовС, Π±ΡŠΡ€Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ тСстовС - ΠΏΡ€ΠΈ Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅, Π² CI ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°
  • ВСстовС Π·Π° Π±Π°Π²Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ интСграция - Π² CI ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°
  • ВСстванС Π½Π° сигурността, тСстванС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΡ‚Π½Π΅ΠΌΠ°Ρ‰ΠΈ Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ»ΠΈ скъпи тСстовС - Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ CI/CD, Π½ΠΎ само Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΈ/Π΅Ρ‚Π°ΠΏΠΈ/Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ Π½Π° компилацията, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° вСрсия ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€ΡŠΡ‡Π½ΠΎ изпълнСниС.

️Задача

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ ΠΏΡŠΡ€Π²ΠΎ Π΄Π° стартиратС тСстовСтС Ρ€ΡŠΡ‡Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° npm test. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π½Π΅ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ git hook, Π·Π° Π΄Π° изпълнявамС Π½Π°ΡˆΠΈΡ‚Π΅ тСстовС ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΈΡ‚. Има Π΅Π΄Π½Π° ΡƒΠ»ΠΎΠ²ΠΊΠ°: ΠΊΡƒΠΊΠΈΡ‚Π΅ Π½Π° Git Π½Π΅ сС считат Π·Π° част ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈ слСдоватСлно Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ GitHub Π·Π°Π΅Π΄Π½ΠΎ с останалитС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ Π½Π° курса. Π—Π° Π΄Π° инсталиратС ΠΊΡƒΠΊΠ°, трябва Π΄Π° стартиратС install_hook.sh ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° repo/hooks/pre-commit към Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° дирСктория .git/hooks/.
ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Π°Π½Π³Π°ΠΆΠΈΡ€Π°Ρ‚Π΅, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ тСстовС ΠΈ Ρ‚Π΅ провСряват Π΄Π°Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ Π΄ΡƒΠΌΠΈ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ‚ Π² списъка.

  1. Π˜Π·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ тСстовСтС Ρ€ΡŠΡ‡Π½ΠΎ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° npm test Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° вашия курс. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ тСстовСтС са Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ.
  2. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΊΡƒΠΊΠ° Π·Π° Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅ (ΠΊΡƒΠΊΠ° Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅) Ρ‡Ρ€Π΅Π· стартиранС install_hook.sh.
  3. Π—Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ си Π² Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ‚ΠΎ си Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  4. Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ тСстовСтС сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° сС Π°Π½Π³Π°ΠΆΠΈΡ€Π°Ρ‚Π΅.

Π’Π°ΡˆΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ трябва Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°, слСд ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ.
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

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

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

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

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄ Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΠΊΠ»ΠΎΠ½

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π°Ρ‚ с Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ правят своя ΠΊΠΎΠ΄ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ с общСствСността. Π‘ GitHub Ρ‚ΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС постига Ρ‡Ρ€Π΅Π· ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΈΠ»ΠΈ Π² Π»ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ (пСрсоналСн Ρ„ΠΎΡ€ΠΊ), ΠΈΠ»ΠΈ Π² Π»ΠΈΡ‡Π΅Π½ ΠΊΠ»ΠΎΠ½.

  • Π‘ разклонСнията ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡΡ‚ΡŠΡ‚ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ сподСлСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, създавайки Π½Π΅Π³ΠΎΠ²ΠΎ Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅, извСстно ΠΎΡ‰Π΅ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΊΠ»ΠΎΠ½ΠΈΡ€Π° Ρ‚ΠΎΠ²Π° Π»ΠΈΡ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с Π½Π΅Π³ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π° ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ са Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ, Ρ‚ΠΎΠΉ Π³ΠΈ ΠΈΠ·Π±ΡƒΡ‚Π²Π° Π² Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ си, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ΠΈ Π² ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° GitHub. Използва сС ΠΈ Π² моя курс Π·Π° Π½Π°ΠΏΡ€Π΅Π΄Π½Π°Π»ΠΈ [Π Π°Π±ΠΎΡ‚Π° Π² Π΅ΠΊΠΈΠΏ ΠΈ CI с Git] (http://devops.redpill.solutions/).
  • Π”Ρ€ΡƒΠ³ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ само Π΅Π΄Π½ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π΄Π° ΠΏΡ€Π΅Π±Ρ€ΠΎΠΈΡ‚Π΅ само ΠΊΠ»ΠΎΠ½Π° master сподСлСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ "Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΎ". Π’ Ρ‚ΠΎΠ·ΠΈ сцСнарий ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚ своя ΠΊΠΎΠ΄ Π² ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄, Π°ΠΊΠΎ всичко Π΅ Π½Π°Ρ€Π΅Π΄, Π΄Π° Π³ΠΎ обСдинят с master сподСлСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ курс Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° разклонСния.

НСка ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ нашия ΠΊΠΎΠ΄.

️Задача

  • ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΠΊΠ»ΠΎΠ½ със ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ вашия Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ»ΠΎΠ½

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

git push --set-upstream origin feature

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС със Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅... Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉ feature ΠΊΠ°Ρ‚ΠΎ "Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½" ΠΈ master ΠΊΠ°Ρ‚ΠΎ "Π±Π°Π·ΠΎΠ² ΠΊΠ»ΠΎΠ½".

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ стС инсталирали master Π² нСговия Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠšΠ°Ρ‚ΠΎ β€žΠ±Π°Π·ΠΎΠ² ΠΊΠ»ΠΎΠ½β€œ няма Π΄Π° отговарям Π½Π° искания Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ Π·Π° курса.

На Π΅Π·ΠΈΠΊΠ° Π½Π° GitHub β€žΠ±Π°Π·ΠΎΠ²ΠΈΡΡ‚ ΠΊΠ»ΠΎΠ½β€œ Π΅ ΠΊΠ»ΠΎΠ½ΡŠΡ‚, Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠΉΡ‚ΠΎ Π±Π°Π·ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си, Π° β€žΠ³Π»Π°Π²Π½ΠΈΡΡ‚ ΠΊΠ»ΠΎΠ½β€œ Π΅ ΠΊΠ»ΠΎΠ½ΡŠΡ‚, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

ΠžΠ±ΡΡŠΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Π½ΠΎΠ²ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ дискусията ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°

Заявка Π·Π° изтСглянС (PR)

Заявка Π·Π° изтСглянС (PR) Π΅ Π½Π°Ρ‡ΠΈΠ½ Π·Π° обсъТданС ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π°. ЗаявкитС Π·Π° изтСглянС са ΠΊΡ€ΡŠΡΡ‚Π΅Π½ΠΈ Π½Π° общия Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² общия ΠΊΠΎΠ΄. ОбикновСно Ρ‡ΠΎΠ²Π΅ΠΊ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠ΄Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠΉ поставя ΠΊΠΎΠ΄Π° Π² Π»ΠΈΡ‡Π½ΠΎΡ‚ΠΎ си ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΌΠΎΠ»ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈΡ‚Π΅ Π·Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π° Π³ΠΎ Π²Π·Π΅ΠΌΠ°Ρ‚(ΠΈΠ·Π΄ΡŠΡ€ΠΏΠ°ΠΉΡ‚Π΅) нСговия ΠΊΠΎΠ΄ Π² Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π΅ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΈ Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚ (сС сливат) нСговият. Π’Π°Π·ΠΈ концСпция Π΅ извСстна ΠΈ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡ€. заявка Π·Π° сливанС.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ функцията Π·Π° заявка Π·Π° изтСглянС Π½Π° GitHub ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ. Π•ΠΊΠΈΠΏΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° комуникация, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ комуникация Π»ΠΈΡ†Π΅ Π² Π»ΠΈΡ†Π΅, гласови повиквания ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΠΉΠ», Π½ΠΎ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ° Ρ€Π΅Π΄ΠΈΡ†Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ заявки Π·Π° изтСглянС Π² стил Ρ„ΠΎΡ€ΡƒΠΌ. Π•Ρ‚ΠΎ някои ΠΎΡ‚ тях:

  • ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ дискусии, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°;
  • ΠΊΠ°Ρ‚ΠΎ място Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΡ‚ автотСстСри ΠΈ ΠΊΠΎΠ»Π΅Π³ΠΈ;
  • Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ΄Π°;
  • Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎ-късно Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ ΠΈ ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ‚Π° Π·Π°Π΄ Ρ‚Π°Π·ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π°Π·ΠΈ част ΠΎΡ‚ ΠΊΠΎΠ΄Π°.

ОбикновСно ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ заявка Π·Π° изтСглянС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ трябва Π΄Π° ΠΎΠ±ΡΡŠΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΈΠ»ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°. НапримСр, Π°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ функция, която ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Π½Π΅Π΄Ρ€Π΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Π½Π°Ρ‡ΠΈΠ½, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ заявка Π·Π° изтСглянС, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ ΠΊΠΎΠ΄, Π·Π° Π΄Π° сподСлитС ΠΈΠ΄Π΅ΠΈΡ‚Π΅ си ΠΈ Π΄Π° ΠΎΠ±ΡΡŠΠ΄ΠΈΡ‚Π΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ си с Π²Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ†ΠΈ. Ако Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΅ ΠΏΠΎ-проста, заявка Π·Π° изтСглянС сС отваря, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅Ρ‰ΠΎ Π²Π΅Ρ‡Π΅ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ, Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС обсъдСно. Π’ някои сцСнарии ΠΌΠΎΠΆΠ΅ Π΄Π° искатС Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ PR само ΠΎΡ‚ ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° качСството: Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ тСстовС ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈ Π½Π° ΠΊΠΎΠ΄Π°. ΠšΠ°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΈ Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅, Π½Π΅ забравяйтС Π΄Π° @спомСнСтС Ρ…ΠΎΡ€Π°Ρ‚Π°, Ρ‡ΠΈΠ΅Ρ‚ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ искатС във Π²Π°ΡˆΠ°Ρ‚Π° заявка Π·Π° изтСглянС.

ОбикновСно, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ PR, ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ слСдното.

  • ΠŸΠΎΡΠΎΡ‡Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈ къдС.
  • ΠΠ°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ описаниС, обясняващо Ρ†Π΅Π»Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅. МоТС Π΄Π° искатС:
    • Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΎΡ‚ ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° контСкста, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ #бъговС ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ;
    • @спомСнСтС всСки, с ΠΊΠΎΠ³ΠΎΡ‚ΠΎ искатС Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ @спомСнСтС Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ ΠΏΠΎ-късно;
    • ΠΏΠΎΠΌΠΎΠ»Π΅Ρ‚Π΅ ΠΊΠΎΠ»Π΅Π³ΠΈ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ с Π½Π΅Ρ‰ΠΎ ΠΈΠ»ΠΈ Π΄Π° провСрят Π½Π΅Ρ‰ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ PR, тСстовСтС, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² Ρ‚Π°ΠΊΠΈΠ²Π° случаи, сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚. Π’ нашия случай Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС ΡΡŠΡ‰ΠΈΡΡ‚ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ тСстовС, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π½ΠΎ Π² Ρ€Π΅Π°Π»Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ тСстовС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Моля, ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ тСстовСтС ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π°Ρ‚. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° тСстовСтС Π² Π΄ΠΎΠ»Π½Π°Ρ‚Π° част Π½Π° PR дискусията Π² интСрфСйса Π½Π° GitHub. ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Ρ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ тСстовСтС ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π°Ρ‚.

️ Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Π±Π΅Π»Π΅ΠΆΠΊΠ° относно произволността Π½Π° списъка с CI ΡΡ‚ΡŠΠΏΠΊΠΈ

Π‘ΠΏΠΈΡΡŠΠΊΡŠΡ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Ρ‚ΠΎΠ·ΠΈ курс, Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΈ субСктивСн, трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π±Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° Ρ‚ΠΎΠ²Π°.

️ Π—Π°Π΄Π°Ρ‡Π°: ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€

  1. ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΊΠ»ΠΎΠ½ master.
  2. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½ с ΠΈΠΌΠ΅ bugfix.
  3. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ тСкст Π½Π° Π±Π΅Π»Π΅ΠΆΠΊΠ° Π² края Π½Π° Ρ„Π°ΠΉΠ»Π° 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. Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅.
  5. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΌΠ°Ρ‚Π° bugfix към ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  6. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС с ΠΈΠΌΠ΅ ДобавянС Π½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° с Π³Π»Π°Π²Π° ΠΊΠ»ΠΎΠ½ bugfix ΠΈ основния ΠΊΠ»ΠΎΠ½master.

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ стС инсталирали master Π² нСговия Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠšΠ°Ρ‚ΠΎ β€žΠ±Π°Π·ΠΎΠ² ΠΊΠ»ΠΎΠ½β€œ няма Π΄Π° отговарям Π½Π° искания Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ Π·Π° курса.

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ трябва Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

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

ΠžΠ΄ΠΎΠ±Ρ€ΡΠ²Π°Π½Π΅ Π½Π° заявка Π·Π° изтСглянС β€žΠ”ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°β€œ

️Задача

  1. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС.
  2. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ—Π°ΡΠ²ΠΊΠ° Π·Π° изтСглянС Π½Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅β€œ.
  3. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠŸΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ»ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎβ€œ.
  4. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½β€œ, Π²Π΅Ρ‡Π΅ Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

Π’ΠΎΠ²Π° Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ слСд сливанС.
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

️ ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΉΡ‚Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈ Π΄Π° добавятС тСстовС

Π‘ΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΡ‚ΠΎ ΠΏΠΎ заявка Π·Π° изтСглянС чСсто Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π’ΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ дискусия, Π½ΠΎ Π² нашия курс Ρ‰Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ към нашия списък с CI ΡΡ‚ΡŠΠΏΠΊΠΈ.

ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π°Ρ‚Π° интСграция ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° извСстно тСстово ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅. Π˜Π·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡ‚Π° Π·Π° тСстово ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π²Π°Ρ€ΠΈΡ€Π°Ρ‚ ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ β€žΠ½Π°ΡΠΎΠΊΠΈ Π·Π° ΠΏΡ€ΠΈΠ½ΠΎΡβ€œ. Π©Π΅ бъдСм прости ΠΈ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ тСст Π·Π° всСки Ρ€Π΅Π΄ Π² нашия ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡŠΡ€Π²ΠΎ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ тСстовСтС. Ако стС инсталирали ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ pre-commit hook ΠΏΠΎ-Ρ€Π°Π½ΠΎ, новодобавСният тСст Ρ‰Π΅ бъдС изпълнСн, Ρ‰Π΅ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈ Π½ΠΈΡ‰ΠΎ няма Π΄Π° бъдС Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½ΠΎ. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π·Π½Π°Π΅ΠΌ, Ρ‡Π΅ Π½Π°ΡˆΠΈΡ‚Π΅ тСстовС Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ тСстват Π½Π΅Ρ‰ΠΎ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Π°ΠΊΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΠΈ тСстовСтС, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° тСстовСтС ΠΌΠΎΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΊΠΎΠ΄ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ спорСд очакванията, ΠΈΠ»ΠΈ Ρ‡Π΅ тСстовСтС Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π΅ тСстват Π½ΠΈΡ‰ΠΎ. ОсвСн Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ Π½Π΅ бяхмС написали тСстовСтС Π½Π° ΠΏΡŠΡ€Π²ΠΎ място, ΠΌΠΎΠΆΠ΅ Π±ΠΈ щяхмС Π΄Π° Π³ΠΈ Π·Π°Π±Ρ€Π°Π²ΠΈΠΌ напълно, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½ΠΈΡ‰ΠΎ нямашС Π΄Π° Π½ΠΈ напомня Π·Π° Ρ‚ΠΎΠ²Π°.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, управлявана ΠΎΡ‚ тСстовС (TDD)

TDD ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° писанС Π½Π° тСстовС ΠΏΡ€Π΅Π΄ΠΈ ΠΊΠΎΠ΄. Π’ΠΈΠΏΠΈΡ‡Π΅Π½ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ TDD, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°.

  1. ДобавянС Π½Π° тСст.
  2. Π˜Π·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ всички тСстовС ΠΈ сС ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅, Ρ‡Π΅ новият тСст Π΅ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ΅Π½.
  3. ΠΠ°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄Π°.
  4. Π˜Π·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ тСстовСтС, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ всички тСстовС са ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π»ΠΈ.
  5. ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‚Π΅ вашия ΠΊΠΎΠ΄.
  6. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Ρ‚Π΅.

Въй ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ тСстовСтС, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Π² Ρ‡Π΅Ρ€Π²Π΅Π½ΠΎ, Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΈΠ·Π΄ΡŠΡ€ΠΆΠ°Π»ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Π² Π·Π΅Π»Π΅Π½ΠΎ, Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ Π΅ извСстСн ΡΡŠΡ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ Ρ‡Π΅Ρ€Π²Π΅Π½ΠΎ-Π·Π΅Π»Π΅Π½ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€.

️Задача

ΠŸΡŠΡ€Π²ΠΎ ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ тСстовСтС ΠΈ Π΄Π° Π³ΠΈ оставитС Π΄Π° сС провалят, слСд Ρ‚ΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅Ρ‚Π΅ тСкста Π½Π° самия списък със ΡΡ‚ΡŠΠΏΠΊΠΈ Π½Π° CI. Π©Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ тСстовСтС ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ (β€žΠ·Π΅Π»Π΅Π½ΠΎβ€œ).
Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ новия ΠΊΠΎΠ΄ Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊ тСстовСтС сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² интСрфСйса Π½Π° GitHub Π² Π΄ΠΎΠ»Π½Π°Ρ‚Π° част Π½Π° дискусията Π·Π° заявка Π·Π° изтСглянС ΠΈ актуализацията Π½Π° PR статуса.

  1. ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΊΠ»ΠΎΠ½ feature.
  2. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ тСстовС към ci.test.js слСд послСдното ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ 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. ΠžΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ тСстовСтС. Ако pre-commit ΠΊΡƒΠΊΠ°Ρ‚Π° Π΅ инсталирана, ΠΎΠΏΠΈΡ‚ΡŠΡ‚ Π·Π° Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ бъдС Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ΅Π½.
  4. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ тСкст към 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. ΠŸΡ€Π°Π²Π΅Ρ‚Π΅ ΠΈ Π°Π½Π³Π°ΠΆΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ.
  6. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² ΠΊΠ»ΠΎΠ½Π° feature.

Π‘Π΅Π³Π° трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ


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

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° сливанС

ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° Заявка Π·Π° промяна ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Π½ΠΈΡ‰ΠΎ Π½Π΅Ρ€Π΅Π΄Π½ΠΎ ΠΈ тСстовСтС Π·Π° нашия ΠΊΠΎΠ΄ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, всС ΠΎΡ‰Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ ΠΊΠ»ΠΎΠ½Π° feature ΠΈ master. Π’ΠΎΠ²Π° Π΅ Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΄Ρ€ΡƒΠ³Π°Ρ‚Π° нишка bugfix бСшС ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΎ с master Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ…ΠΌΠ΅ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ PR.
Π’ΠΎΠ²Π° създава ситуация, ΠΏΡ€ΠΈ която отдалСчСният ΠΊΠ»ΠΎΠ½ master ΠΈΠΌΠ° ΠΏΠΎ-Π½ΠΎΠ²Π° вСрсия ΠΎΡ‚ Ρ‚Π°Π·ΠΈ, Π½Π° която Π±Π°Π·ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠ»ΠΎΠ½Π° feature. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ просто Π΄Π° ΠΏΡ€Π΅Π½Π°Π²ΠΈΠ΅ΠΌ HEAD master Π΄ΠΎ края Π½Π° Π½ΠΈΡˆΠΊΠ°Ρ‚Π° feature. Π’ Ρ‚Π°Π·ΠΈ ситуация трябва ΠΈΠ»ΠΈ Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ, ΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ feature ΠΏΡ€Π΅Π±Π°Π·ΠΈΡ€Π°Π½Π΅ master. GitHub Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сливанС, Π°ΠΊΠΎ няма ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ. Π£Π²ΠΈ, Π² Π½Π°ΡˆΠ°Ρ‚Π° ситуация ΠΈ Π΄Π²Π°Ρ‚Π° ΠΊΠ»ΠΎΠ½Π° ΠΈΠΌΠ°Ρ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€Π°Ρ‰ΠΈ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ във Ρ„Π°ΠΉΠ»Π° ci.md. Π’Π°Π·ΠΈ ситуация Π΅ извСстна ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° сливанС ΠΈ трябва Π΄Π° я Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ Ρ€ΡŠΡ‡Π½ΠΎ.

ОбСдиняванС ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π±Π°Π·ΠΈΡ€Π°Π½Π΅

ОбСдиняванС

  • Бъздава Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ Π·Π° сливанС ΠΈ записва Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° хронология.
    • Π—Π°ΠΏΠ°Π·Π²Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ‚Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ с Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΊΠ»Π΅ΠΉΠΌΠ° ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈ.
    • Π—Π°ΠΏΠ°Π·Π²Π° SHA Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ към тях Π² дискусии Π·Π° заявка Π·Π° промяна.
  • Изисква Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ.
  • ΠŸΡ€Π°Π²ΠΈ историята Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Π°.
    • Π˜ΡΡ‚ΠΎΡ€ΠΈΡΡ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ‚Ρ€ΡƒΠ΄Π½Π° Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΏΠΎΡ€Π°Π΄ΠΈ голСмия Π±Ρ€ΠΎΠΉ разклонСния (напомнящи Π½Π° IDE ΠΊΠ°Π±Π΅Π»).
    • Затруднява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Π½Π°ΠΏΡ€. git bisect ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ - Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈ само Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚Π° Π·Π° сливанС.

Π Π΅Π±Π°Π·Π°

  • Π’ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ тСкущия ΠΊΠ»ΠΎΠ½ Π²ΡŠΡ€Ρ…Ρƒ основния ΠΊΠ»ΠΎΠ½ Π΅Π΄ΠΈΠ½ слСд Π΄Ρ€ΡƒΠ³.
    • Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ сС Π½ΠΎΠ²ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ с Π½ΠΎΠ²ΠΈ SHA, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΊΠ°Ρ€Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² GitHub Π΄Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‚ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ‚Π΅ заявки Π·Π° изтСглянС, Π½ΠΎ Π½Π΅ ΠΈ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ.
    • АнгаТимСнтитС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ Π² процСса ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ Π² Π΅Π΄Π½ΠΎ.
  • МоТС Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° мноТСство ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ.
  • Позволява Π²ΠΈ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Π° история.
    • Π˜ΡΡ‚ΠΎΡ€ΠΈΡΡ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎ-лСсна Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, стига Π΄Π° Π½Π΅ Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ дълга Π±Π΅Π· Ρ€Π°Π·ΡƒΠΌΠ½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°.
    • Автоматичното отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ отстраняванС Π½Π° нСизправности Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-лСсно: ΠΏΡ€Π°Π²ΠΈ Π³ΠΎ възмоТно git bisect, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π°Π·Π°Π΄ ΠΏΠΎ-ясно ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎ.
  • Изисква ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ с ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ с Ρ„Π»Π°Π³ --force ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° със заявки Π·Π° изтСглянС.

ОбикновСно Π΅ΠΊΠΈΠΏΠΈΡ‚Π΅ сС ΡΡŠΠ³Π»Π°ΡΡΠ²Π°Ρ‚ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° стратСгия, ΠΊΠΎΠ³Π°Ρ‚ΠΎ трябва Π΄Π° обСдинят ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС "чисто" сливанС ΠΈΠ»ΠΈ "чисто" Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅ ΠΎΡ‚Π³ΠΎΡ€Π΅, ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ тях, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π³ΠΎΡ€Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ (git rebase -i) Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π·Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π½ΠΎ сС сливат Π·Π° β€žΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈβ€œ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅.

Π’ΡƒΠΊ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ сливанС.

️Задача

  1. Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΊΠΎΠ΄ΡŠΡ‚ Π΅ Π² мСстСн ΠΊΠ»ΠΎΠ½ master Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  2. ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΊΠ»ΠΎΠ½ feature.
  3. Π˜Π½ΠΈΡ†ΠΈΠΈΡ€Π°ΠΉΡ‚Π΅ сливанС с ΠΊΠ»ΠΎΠ½ master. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° сливанС ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€Π°Ρ‰ΠΈ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ci.md.
  4. Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ списък с CI ΡΡ‚ΡŠΠΏΠΊΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Π±Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° Π½Π΅Π³ΠΎ Π΄Π° останат Π² тСкста.
  5. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ Π·Π° сливанС към ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΠΊΠ»ΠΎΠ½ feature.
  6. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° заявката Π·Π° изтСглянС Π² потрСбитСлския интСрфСйс Π½Π° GitHub ΠΈ ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ сливанСто бъдС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

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

Π”ΠΎΠ±Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Π°!

Π“ΠΎΡ‚ΠΎΠ²ΠΈ стС със списъка ΠΈ сСга трябва Π΄Π° ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ заявката Π·Π° изтСглянС master.

️ Π—Π°Π΄Π°Ρ‡Π°: ΠžΠ΄ΠΎΠ±Ρ€Π΅Ρ‚Π΅ заявка Π·Π° изтСглянС β€žΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅β€œ

  1. ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ заявка Π·Π° изтСглянС.
  2. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ—Π°ΡΠ²ΠΊΠ° Π·Π° изтСглянС Π½Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅β€œ.
  3. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠŸΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ»ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎβ€œ.
  4. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½β€œ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

Π’ΠΎΠ²Π° Π΅ Π²Π°ΡˆΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

Π“Ρ€Π΅ΡˆΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

Казва сС, Ρ‡Π΅ β€žΡ‚Π΅ΡΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ липсата ΠΈΠΌβ€œ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ тСстовС ΠΈ Ρ‚Π΅ Π½Π΅ Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Π² производството сС ΠΏΡ€ΠΎΠΌΡŠΠΊΠ½Π° ΠΊΠΎΠ²Π°Ρ€Π΅Π½ бъг.

Π’ сцСнарий ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ трябва Π΄Π° сС ΠΏΠΎΠ³Ρ€ΠΈΠΆΠΈΠΌ Π·Π°:

  • ΠΊΠ°ΠΊΠ²ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² производството;
  • ΠΊΠΎΠ΄ Π² Ρ‚Π΅ΠΌΠ°Ρ‚Π° master с Π³Ρ€Π΅ΡˆΠΊΠ°, ΠΎΡ‚ която Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π½ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π°.

Врябва Π»ΠΈ Π΄Π° сС Π²ΡŠΡ€Π½Π° ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ поправя Π² слСдващата вСрсия?

Π’Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π°Π·Π°Π΄ Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° внСдряванС Π½Π° извСстна Π΄ΠΎΠ±Ρ€Π° ΠΏΠΎ-Ρ€Π°Π½Π½Π° вСрсия Π² производство ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°. β€žΠ€ΠΈΠΊΡΠΈΡ€Π°Π½Π΅ Π½Π°ΠΏΡ€Π΅Π΄β€œ Π΅ добавянСто Π½Π° корСкция към master ΠΈ внСдряванС Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия възмоТно Π½Π°ΠΉ-скоро. Въй ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ интСрфСйси (API) ΠΈ схСмитС Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ сС промСнят, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ сС Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° Π² производството, с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° доставка ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ тСстово ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅, Π²Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π°Π·Π°Π΄ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈ рисковано ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π² слСдващата вСрсия.

Въй ΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π°Π·Π°Π΄ Π½Π΅ носи никакъв риск Π² нашия случай, Ρ‰Π΅ Ρ‚Ρ€ΡŠΠ³Π½Π΅ΠΌ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½ΠΈ позволява

  • ΠΏΠΎΠΏΡ€Π°Π²Π΅Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° възмоТно Π½Π°ΠΉ-скоро;
  • Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² master Π²Π΅Π΄Π½Π°Π³Π° подходящ Π·Π° Π·Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π°.

️Задача

  1. ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΊΠ»ΠΎΠ½ master Π»ΠΎΠΊΠ°Π»Π½ΠΎ.
  2. АктуализирайтС Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  3. Π’ΡŠΡ€Π½Π΅Ρ‚Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚Π° Π·Π° PR сливанС ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅ Π² master.
  4. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π’ΠΎΠ²Π° Π΅ историята Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ Π·Π° сливанС
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

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

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

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

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

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

️ БамотСст

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ci.md Π²Π΅Ρ‡Π΅ Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° тСкста "подъл бъг" слСд Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ Π·Π° сливанС.

ΠŸΠΎΠΏΡ€Π°Π²Π΅Ρ‚Π΅ списъка със ΡΡ‚ΡŠΠΏΠΊΠΈ Π½Π° CI ΠΈ Π³ΠΎ Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Π½Π° master

НиС напълно Π²ΡŠΡ€Π½Π°Ρ…ΠΌΠ΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚Π° Π·Π° сливанС Π½Π° ΠΊΠ»ΠΎΠ½Π°. feature. Π”ΠΎΠ±Ρ€Π°Ρ‚Π° Π½ΠΎΠ²ΠΈΠ½Π° Π΅, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ нямамС Π³Ρ€Π΅ΡˆΠΊΠ° Π² master. Π›ΠΎΡˆΠ°Ρ‚Π° Π½ΠΎΠ²ΠΈΠ½Π° Π΅, Ρ‡Π΅ Π½Π°ΡˆΠΈΡΡ‚ Ρ†Π΅Π½Π΅Π½ списък ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠΈ Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция ΡΡŠΡ‰ΠΎ Π³ΠΎ няма. Π’Π°ΠΊΠ° Ρ‡Π΅ Π² идСалния случай трябва Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ корСкцията към Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ feature ΠΈ Π³ΠΈ Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Π½Π° master Π·Π°Π΅Π΄Π½ΠΎ с корСкцията.

МоТСм Π΄Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠΌ към ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ:

  • Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ отмСня сливанСто feature с master;
  • прСмСстванС Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ feature.

Π Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π΅ΠΊΠΈΠΏΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ случай, Π½ΠΎ Π½ΠΈΠ΅ Ρ‰Π΅ прСмСстим ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ ΠΈ Ρ‰Π΅ създадСм ΠΎΡ‚Π΄Π΅Π»Π½Π° заявка Π·Π° изтСглянС Π·Π° Ρ‚ΠΎΠ·ΠΈ Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½.

️Задача

  1. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ нишка, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° feature-fix ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ към Π½Π΅Π³ΠΎ.
  2. ΠœΠΈΠ³Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ всички Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΊΠ»ΠΎΠ½ feature към Π½ΠΎΠ²Π° Ρ‚Π΅ΠΌΠ°. Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΏΡ€ΠΈ сливанС, възникнали ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° миграцията.

    Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

  3. ДобавянС Π½Π° рСгрСсионСн тСст към ci.test.js:

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

  4. Π˜Π·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ тСстовСтС Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π·Π° Π΄Π° стС сигурни, Ρ‡Π΅ няма Π΄Π° сС провалят.
  5. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ тСкста β€žΡ подъл Π±ΡŠΠ³β€œ Π² ci.md.
  6. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ тСстови ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² списъка със ΡΡ‚ΡŠΠΏΠΊΠΈ към индСкса ΠΈ Π³ΠΈ Π°Π½Π³Π°ΠΆΠΈΡ€Π°ΠΉΡ‚Π΅.
  7. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½Π° Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Врябва Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Ρ‚ΠΎΠ²Π°:
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

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

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС.

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка Π·Π° изтСглянС със Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° функцията... Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉ feature-fix ΠΊΠ°Ρ‚ΠΎ "Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½" ΠΈ master ΠΊΠ°Ρ‚ΠΎ "Π±Π°Π·ΠΎΠ² ΠΊΠ»ΠΎΠ½".
Моля, ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ тСстовСтС Π·Π°Π²ΡŠΡ€ΡˆΠ°Ρ‚. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ статуса Π½Π° тСстовСтС Π² Π΄ΠΎΠ»Π½Π°Ρ‚Π° част Π½Π° PR дискусията.

Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ стС инсталирали master Π² нСговия Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠšΠ°Ρ‚ΠΎ β€žΠ±Π°Π·ΠΎΠ² ΠΊΠ»ΠΎΠ½β€œ няма Π΄Π° отговарям Π½Π° искания Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ Π·Π° курса.

ΠžΠ΄ΠΎΠ±Ρ€ΡΠ²Π°Π½Π΅ Π½Π° заявка Π·Π° изтСглянС β€žΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡΡ‚Π°β€œ

Благодаря Π·Π° корСкцията! Моля, ΠΎΠ΄ΠΎΠ±Ρ€Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² master ΠΎΡ‚ заявка Π·Π° изтСглянС.

️Задача

  1. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ—Π°ΡΠ²ΠΊΠ° Π·Π° изтСглянС Π½Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅β€œ.
  2. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠŸΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ»ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎβ€œ.
  3. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½β€œ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.
Π’ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция

ЧСстито!

Π˜Π·ΠΏΡŠΠ»Π½ΠΈΡ…Ρ‚Π΅ всички ΡΡ‚ΡŠΠΏΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция.

Ако Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с курса ΠΈΠ»ΠΈ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅, моля, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° с ΡƒΡ‡Π΅Π±Π½ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ. Π’ΠΎΠ·ΠΈ курс ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π° вСрсия ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ GitHub Learning Lab ΠΊΠ°Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€