Gits

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Git Flow

Historical Branches ВмСсто использования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ master Π²Π΅Ρ‚ΠΊΠΈ, этот workflow ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ, для записи истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Master Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ², Π² development ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅ вСдСтся активная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Ρ‚Π°Π³Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΈΡ‚Ρ‹ Π² master Π²Π΅Ρ‚ΠΊΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ вСрсий.

Feature Branches КаТдая новая Ρ„ΠΈΡ‡Π° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ - Π² своСй Π²Π΅Ρ‚ΠΊΠ΅, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡƒΡˆΠΈΡ‚ΡŒΡΡ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для сохранСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π°Π±ΠΎΡ€Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Для создания Ρ„ΠΈΡ‡Π΅Π±Ρ€Π°Π½Ρ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ development Π²Π΅Ρ‚ΠΊΠ°. Когда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΈΡ‡ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΎΠ½Π° сливаСтся Π² development. Π€ΠΈΡ‡ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с master Π²Π΅Ρ‚ΠΊΠΎΠΉ.

Release Branches Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ development Π½Π°Π±Π΅Ρ€Π΅Ρ‚ достаточно Ρ„ΠΈΡ‡ для Ρ€Π΅Π»ΠΈΠ·Π° (ΠΈΠ»ΠΈ Π² Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ) создаСтся release Π²Π΅Ρ‚ΠΊΠ° ΠΈΠ· development Π²Π΅Ρ‚ΠΊΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ этого Π±Ρ€Π°Π½Ρ‡Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·-Ρ†ΠΈΠΊΠ», поэтому Π² эту Π²Π΅Ρ‚ΠΊΡƒ ΡƒΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π΄Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π³-фиксы, гСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ таски, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ€Π΅Π»ΠΈΠ·.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π»ΠΈΠ·-Π²Π΅Ρ‚ΠΊΠ° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π°, Π΅Π΅ ΡΠ»ΠΈΠ²Π°ΡŽΡ‚ с master ΠΈ Ρ‚Π°Π³Π°ΡŽΡ‚ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ слита ΠΈ с development Π²Π΅Ρ‚ΠΊΠΎΠΉ, которая ΡƒΠΆΠ΅ скорСС всСго ΡƒΠ±Π΅ΠΆΠ°Π»Π° Π²ΠΏΠ΅Ρ€Π΅Π΄, с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅Π»ΠΈΠ·Π°.

ИспользованиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ для Ρ€Π΅Π»ΠΈΠ·Π° позволяСт ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·, Π² Ρ‚ΠΎΠΌ врСмя ΠΊΠΎΠ³Π΄Π° другая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π² development для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ².

Hotfix BranchesΒ Hotfix Π²Π΅Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для быстрого ΠΏΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π° Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². Π­Ρ‚ΠΎ СдинствСнная Π²Π΅Ρ‚ΠΊΠ°, которая создаСтся ΠΈΠ· master. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ фикс Π³ΠΎΡ‚ΠΎΠ², ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ слит ΠΊΠ°ΠΊ Π² master, Ρ‚Π°ΠΊ ΠΈ Π² development (ΠΈΠ»ΠΈ Π² Π½ΠΎΠ²Ρ‹ΠΉ release, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ) ΠΈ master Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй (ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° patch Ρ†ΠΈΡ„Ρ€Π°. v.1.0.1, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки Π½Π΅ прСрывая вСсь Π²ΠΎΡ€ΠΊΡ„Π»ΠΎΡƒ ΠΈΠ»ΠΈ Π½Π΅ доТидаясь ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°, для выкатывания исправлСний.

Reference:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Git Rebase

Π˜Ρ‚Π°ΠΊ git Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠΌΠΈΡ‚Π°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΈΡ‚ β€” Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΈΡ‚Π° Π΅ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ hash. Когда происходит слияниС Π²Π΅Ρ‚ΠΎΠΊ посрСдством merge:

$ git merge "another_branch"

Ρ‚ΠΎ всС ΠΊΠΎΠΌΠΈΡ‚Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ β€” ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊΠΎΠΌΠΈΡ‚Π°, Π΅Π³ΠΎ hash + ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ добавляСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ искусствСнный ΠΊΠΎΠΌΠΈΡ‚. ΠŸΡ€ΠΈ этом ΠΊΠΎΠΌΠΈΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π­Ρ‚ΠΎ Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Допустим ваш ΠΊΠΎΠΌΠΈΡ‚ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ β€” Π²Ρ‹ΠΈΡΠΊΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ спискС Π³Π΄Π΅ ваш ΠΊΠΎΠΌΠΈΡ‚, Π° Π³Π΄Π΅ Π½Π΅ ваш Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ приятно. И Π²ΠΎΠΎΠ±Ρ‰Π΅ β€” Π² ΠΎΠ±Ρ‰Π΅ΠΉ истории хочСтся Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ измСнСния, Π° Π½Π΅ Β«ΠΎΠΉ, я Π·Π°Π±Ρ‹Π» ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ;Β». Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСсколько ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ² ΡΠΊΠ»Π΅ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ rebase. Π₯отя Π² интСрфСйсС GitHub Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠ° squash & commit β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС pull request (PR) ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠ· вашСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ) ΠΈ послС прохоТдСния всСх Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ squash & commit, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈ ваши измСнСния появятся Π² основной Π²Π΅Ρ‚ΠΊΠ΅ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ‚.

Π₯ΠΎΡ‡Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎ Π΄Π²ΡƒΡ… случаях использования rebase:

  1. Когда измСнСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π½Π΅ посрСдством merge, Π° посрСдством rebase:Β $ git rebase "another_branch"Β Π­Ρ‚ΠΎ позволяСт ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΈΡ‚Ρ‹ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ послС всСх ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ внСсСны Π² Π²Π΅Ρ‚ΠΊΡƒ Β«another_branchΒ». Π₯эши Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ² измСнятся.
  2. Когда ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ² β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ ΠΈΡ…, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:Β $ git rebase -i {HEAD~_commit_count_|commit_hash}

Π˜Ρ‚Π°ΠΊ Π²Ρ‹ всС сдСлали Π² своСй ΡƒΡŽΡ‚Π½Π΅Π½ΡŒΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ этим ΠΊΠΎΠΌΠΈΡ‚ΠΎΠΌ с ΠΌΠΈΡ€ΠΎΠΌ, Π½ΠΎ ΠΌΠΈΡ€ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ вас Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ‚.Β git rebase -i запустит Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΈΡ‚Ρ‹ (порядок слСдования ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ² β€” свСрху Π²Π½ΠΈΠ· Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ git log). МоТно ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΈΡ‚ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΈΡ‚ Π½Π°Π΄ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Β pick "commit_hash" "comment" β†’ fixup "commit_hash" "comment".

ΠŸΡ€ΠΈ этом всС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² fixup ΠΊΠΎΠΌΠΈΡ‚Π°Ρ… ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΈΡ‚Π°. Если Π²Π°ΠΌ Π±Ρ‹Π»ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ρ‚ΠΎ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ squash вмСсто fixup.

Но Ссли процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π» Π΄ΠΎΠ»ΠΎΠ³, Ρ‚ΠΎ скорСС всСго Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ merge основной Π²Π΅Ρ‚ΠΊΠΈ. И всС ваши ΠΊΠΎΠΌΠΈΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ΡΡ с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΈΡ‚Π°ΠΌΠΈ ΠΈ ΡΠΊΠ»Π΅ΠΈΠ²Π°Ρ‚ΡŒ ваши с Π½Π΅ вашими Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ нСпростой. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒΒ git rebase -i <> стоит ΡΠ΄Π΅Π»Π°Ρ‚ΡŒΒ git rebase.Β git rebase поставит всС ваши ΠΊΠΎΠΌΠΈΡ‚Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ† списка всСх ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ² (Π² Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ запустив git log) ΠΈ послС этого Π·Π°ΠΏΡƒΡΡ‚ΠΈΡŒΒ git rebase -i <HEAD~ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΠ²ΠΎ_Π²Π°ΡˆΠΈΡ…_ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ²>, Π²ΠΎ всСх строчках ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ pick β†’ {fixup|squash} ΠΈ вуаля β€” Ρƒ вас ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ‚.

Если Π² процСссС рСдактирования ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ²Β git rebase -i <>Β Π²Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ накосячили, Ρ‚ΠΎ Π½Π΅ стоит ΠΆΠ°Ρ‚ΡŒ Control+C β€” exit code Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° git Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚. Он просто Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ сдСлаСт всС ΠΏΠΎ Π½Π΅ΠΌΡƒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС строчки Π² Ρ„Π°ΠΉΠ»Π΅. git ΠΏΠΎΠΉΠΌΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ.

ПослС манипуляций с rebase потрСбуСтся push с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -F. ВсС это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пСрСписываСм мСняСм ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΈΡ‚ΠΎΠ² ΠΈ git нас ΠΎΠ± этом чСстно ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚.Β $ git push -f

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Git Cherry pick

Команда git cherry-pickΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пСрСнСсСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСста рСпозитория Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ обслуТивания. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Β git mergeΒ ΠΈΒ git rebase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСносят ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ†Π΅Π»Ρ‹ΠΌΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌΠΈ.

git cherry-pick <commit-hash>

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ force push

Если Π²Ρ‹ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ старыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² истории git, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: исправили имя Π°Π²Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ e-mail, ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ»ΠΈ воспользовались amend ΠΈΠ»ΠΈ revert, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ push-Π° git справСдливо «ругнётся»

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΌ всё ΠΆΠ΅ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ наши измСнСния, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ

git push --force origin <имя_Π²Π΅Ρ‚ΠΊΠΈ>

Но Π² этом случаС ΠΌΡ‹ рискуСм ΠΏΠ΅Ρ€Π΅Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ‡ΡŒΠΈ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ измСнСния, Ссли с Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Π±ΠΈΡ€Π°Π»ΠΈ измСнСния с сСрвСра, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ успСл Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git push --force-with-lease origin <имя_Π²Π΅Ρ‚ΠΊΠΈ>

Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ успСл Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Π±ΠΈΡ€Π°Π»ΠΈ измСнСния с сСрвСра, Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ΡŒ, Π° выдаст Π½Π°ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, послС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ смоТСм ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ со своими измСнСниями ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒΒ push --force-with-leaseΒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pre-commit check

Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах контроля вСрсий, Π² Git’С Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ собствСнныС сцСнарии Π² Ρ‚Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° происходят Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ дСйствия. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² (hook): Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π½Π° сторонС сСрвСра. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для клиСнтских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ созданиС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ слияниС. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π½Π° сторонС сСрвСра Π½ΡƒΠΆΠ½Ρ‹ для сСрвСрных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡ‘ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для выполнСния самых Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. О Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΌΡ‹ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ.

Pre-commit check ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

  • Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ΄Π° Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: соотвСтствиС трСбованиям PEP8, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΡ‚Π΄);
  • Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΡŽΠ½ΠΈΡ‚-тСсты ΠΈΡ‚Π΄);
  • ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ commit’а Π² случаС обнаруТСния ошибок ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΆΡƒΡ€Π½Π°Π» для Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠ².

CI/CD

ci-cd

Continuous integration (нСпрСрывная интСграция) НСпрСрывной интСграция Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: всС измСнСния, вносимыС Π² ΠΊΠΎΠ΄, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (опСрация называСтся «слияниС»). БлияниС происходит нСсколько Ρ€Π°Π· Π² дСнь, ΠΈ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слияния Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ срабатываСт автоматичСская сборка ΠΈ тСстированиС.

Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ сборкой ΠΈ тСстированиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ трСбуСтся ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (это зависит ΠΎΡ‚ языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° написана). БСгодня всС Ρ‡Π°Ρ‰Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Docker. Π—Π°Ρ‚Π΅ΠΌ автоматичСскиС тСсты ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Ρƒ UI, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ API ΠΈ ΠΏΡ€. ВсС эти этапы Π² совокупности ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «сборкой».

CI – это своСобразная страховочная сСтка, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ массы ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ сдачСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Continuous delivery (нСпрСрывная доставка) НСпрСрывная доставка – это ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго процСсса Ρ€Π΅Π»ΠΈΠ·Π° ПО. ИдСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ CI, плюс автоматичСски Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ вСсти Ρ€Π΅Π»ΠΈΠ· ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ. ΠŸΡ€ΠΈ этом ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ: любой, ΠΊΡ‚ΠΎ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ достаточными привилСгиями для развСртывания Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΈ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² нСсколько ΠΊΠ»ΠΈΠΊΠΎΠ². ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚, избавившись практичСски ΠΎΡ‚ всСй Ρ€ΡƒΡ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, трудится ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Π΅Π΅.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² процСссС Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ доставки трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ этап: ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’ слоТных систСмах с мноТСством зависимостСй ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ доставки ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ этапы, выполняСмыС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π»ΠΈΠ±ΠΎ автоматичСски.

Continuous deployment(Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π΅Π½ΠΈΠ΅) НСпрСрывноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ располагаСтся Β«Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅Β» Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ доставки. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС всС измСнСния, вносимыС Π² исходный ΠΊΠΎΠ΄, автоматичСски Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½, Π±Π΅Π· явной ΠΎΡ‚ΠΌΠ°ΡˆΠΊΠΈ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сводится ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ запроса Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (pull request) ΠΎΡ‚ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΈ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… всСх Π²Π°ΠΆΠ½Ρ‹Ρ… событий.

НСпрСрывноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ сущСствовала отлаТСнная ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, всС ΡƒΠΌΠ΅Π»ΠΈ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€ΡƒΠΊΡƒ Π½Π° ΠΏΡƒΠ»ΡŒΡΠ΅ ΠΈ быстро Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ систСму.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ CI ΠΈ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌΡƒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ, для Π½Π°Ρ‡Π°Π»Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² ΠΎΠ±ΠΊΠ°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ срСду, Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ – ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ»ΠΈΠΊΠΎΠΌ.

РСзюмС:

  • НСпрСрывная интСграция (CI): ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π° сливаСт ΠΈΡ… с основной Π²Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎ нСсколько Ρ€Π°Π· Π² дСнь, процСссы сборки ΠΈ тСстирования ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… 10 ΠΌΠΈΠ½ΡƒΡ‚; Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ выполняСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
  • НСпрСрывная доставка (CD): автоматизируСтся CI + вСсь процСсс Ρ€Π΅Π»ΠΈΠ·Π° ПО. ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… этапов. Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ выполняСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
  • НСпрСрывноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅: CI + CD + ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½.

Reference: НСпрСрывная интСграция, нСпрСрывная доставка, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅: просто ΠΌΠ°Ρ‚Ρ€Π΅ΡˆΠΊΠ°

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Какая Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Scrum ΠΈ Kanban

Scrum ΠΈ Kanban β€” прСдставитСли ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΉ Agile-сСмСйства. ОбС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ.

Π‘ΠΎΠ»Π΅Π΅ 17 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π»ΠΈΠ΄Π΅Ρ€Ρ‹ IT-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сформулировали манифСст Agile. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ· манифСста:

  • Π›ΡŽΠ΄ΠΈ ΠΈ взаимодСйствиС Π²Π°ΠΆΠ½Π΅Π΅ процСссов ΠΈ инструмСнтов.
  • Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π²Π°ΠΆΠ½Π΅Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
  • БотрудничСство с Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ Π²Π°ΠΆΠ½Π΅Π΅ согласования условий ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°.
  • Π“ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊ измСнСниям Π²Π°ΠΆΠ½Π΅Π΅ слСдования ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρƒ.

ΠžΡΠ½ΠΎΠ²ΡƒΒ ScrumΒ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ спринты, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, 2-3-Ρ… Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅. ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ спринта ΠΊΠΎΠΌΠ°Π½Π΄Π° сама Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ список Ρ„ΠΈΡ‡ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ, Π΄Π°Π»Π΅Π΅ запускаСтся спринт.

ПослС окончания спринта Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π·Π°Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π° Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ β€” пСрСносятся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ спринт. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ„ΠΈΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя спринта, Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ: Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π° стартС спринта β€” Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ сдСлано любой Ρ†Π΅Π½ΠΎΠΉ ΠΊ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ спринта.

KanbanΒ Π΄Π°Π΅Ρ‚ большС гибкости, Ссли ΠΏΠΎΠ΄ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ частоту смСны ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ². Π’Ρ‡Π΅Ρ€Π° Π²Ρ‹ Π·Π°Π»ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΄ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ, Π° сСгодня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΈ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π²ΠΎΡ‚ эта ΡˆΡ‚ΡƒΠΊΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ β€” люди Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠΊΡƒΠΏΠΈΡ‚ΡŒΒ». Π’Ρ‹ Β«Π΄Π°Π΅Ρ‚Π΅ ΠΏΠΎ шапкС» UX, ΠΎΠ½ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π½ΠΎΠ²Ρ‹Π΅ трСбования. Π’Ρ‹ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Π½Π°Π²Π΅Ρ€Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ эту Π·Π°Π΄Π°Ρ‡Ρƒ, программист Π±Π΅Ρ€Π΅Ρ‚ эту Π·Π°Π΄Π°Ρ‡Ρƒ «свСрху», выполняСт Π΅Π΅ ΠΈ, ΠΊ Π²Π΅Ρ‡Π΅Ρ€Ρƒ fix ΡƒΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΄Π΅, конвСрсия Π² ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ выросли Π½Π° 12%. Π­Ρ‚ΠΎ ΠΏΠΎΠ±Π΅Π΄Π°.

Основная Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Scrum ΠΈ Канбан β€” Π² Π΄Π»ΠΈΠ½Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π’ Scrum ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ β€” 2 Π½Π΅Π΄Π΅Π»ΠΈ, Π² Kanban Π·Π°Π΄Π°Ρ‡ΠΈ программисту ΠΌΠΎΠΆΠ½ΠΎ Β«ΠΏΠΎΠ΄ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΒ» Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь.

Π’Β ScrumΒ Π·Π°Π΄Π°Ρ‡ΠΈ принято ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π² Story points ΠΈΠ»ΠΈ Π² часах. Π‘Π΅Π· ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π΅ получится ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спринт: вСдь Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, успССм Π»ΠΈ ΠΌΡ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° 2 Π½Π΅Π΄Π΅Π»ΠΈ. Π§Π΅Ρ€Π΅Π· 2 Π½Π΅Π΄Π΅Π»ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ†Π΅Π½Π½ΡƒΡŽ статистику β€” сколько часов ΠΈΠ»ΠΈ Story points ΠΊΠΎΠΌΠ°Π½Π΄Π° смогла ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π° спринт. Velocity β€” это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π° ΠΎΠ΄ΠΈΠ½ спринт. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ позволяСт Scrum ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π³Π΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· 2 Π½Π΅Π΄Π΅Π»ΠΈ.

Π’Β KanbanΒ Π½Π΅ принято Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ. Π­Ρ‚ΠΎ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ сама. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ понятия Β«ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹Β», считаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ срСднСС врСмя Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ. ВрСмя это считаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° β€” Cycle Time.

Π˜Ρ‚Π°ΠΊ, Π² Scrum наша Ρ†Π΅Π»ΡŒ β€” Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ спринт, Π² Kanban β€” Π·Π°Π΄Π°Ρ‡Ρƒ.

Scrum β€” это автобус, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ останавливаСтся лишь Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… остановках, Π³Π΄Π΅ люди выходят Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ. А Kanban β€” это ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΊΠ°: Π·Π°Ρ…ΠΎΡ‚Π΅Π» пассаТир Π²Ρ‹ΠΉΡ‚ΠΈ, попросил водитСля ΠΈ Π²Ρ‹ΡˆΠ΅Π» Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Code Debt ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Π±Ρ‹Ρ‚ΡŒ

Π’ классичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, Ρ‚.Π΅. Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эта ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Π° Π±Ρ‹Π»Π° описана Π’Π°Ρ€Π΄ΠΎΠΌ КаннингСмом, ΠΏΠΎΠ΄ тСхничСским Π΄ΠΎΠ»Π³ΠΎΠΌ понимаСтся осознанноС компромиссноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ всС прСимущСства ΠΎΡ‚ быстрого, ΠΏΡƒΡΡ‚ΡŒ ΠΈ Π½Π΅ идСального тСхничСского Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ придСтся Ρ€Π°ΡΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. И хотя с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ситуация, ΠΊΠΎΠ³Π΄Π° ΠΏΠ»ΠΎΡ…ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠΉ, Π½Π° самом Π΄Π΅Π»Π΅, это Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ: Ссли краткосрочноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ прСимущСства, Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ², ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ, Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ. Иногда это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ СдинствСнным способом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ долгосрочная пСрспСктива Π²ΠΎΠΎΠ±Ρ‰Π΅ сущСствовала.

ВСхничСский Π΄ΠΎΠ»Π³ Π² классичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ являСтся ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΌ ΠΈ Π² основном касаСтся стратСгичСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, поэтому ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π½Π΅Π³ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π½Π° Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°Ρ…, ΠΌΠ°Ρ‚Π΅Ρ€Ρ‹Ρ… Π»ΠΈΠ΄Π°Ρ…, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°Ρ… ΠΈ Π΄Π°ΠΆΠ΅ ПМ-Π°Ρ…, Π½ΠΎ Π²ΠΎΡ‚ всС, Ρ‡Ρ‚ΠΎ связано с грязным ΠΊΠΎΠ΄ΠΎΠΌ касаСтся ΠΏΠΎ большСй части простых Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². На самом Π΄Π΅Π»Π΅, Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ грязным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ стратСгичСским Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎ сути, Π½Π΅ такая ΡƒΠΆ ΠΈ большая: ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ возмоТности Π² систСму Π²Π°ΠΌ приходится Ρ€Π°ΡΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π·Π° Π½Π΅Π΄Π°Π»ΡŒΠ½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ.

Π’Ρ‹ΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹ ΠΏΠΎ Ρ‚Π΅Ρ…Π΄ΠΎΠ»Π³Ρƒ Π»Π΅Π³Ρ‡Π΅, Ссли Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ± этом Π½Π° этапС создания ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

  • Π”Π΅Π»Π°ΠΉΡ‚Π΅ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ MVP ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ.
  • Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ: микросСрвисы, API с вСрсионированиСм.
  • ΠžΡ‚ΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ собствСнных сСрвСрных Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. НапримСр, Microsoft Azure, AWS Amazon Cloud, «ЯндСкс.Облако», ΠΎΠ±Π»Π°ΠΊΠΎ ΠΎΡ‚ Mail.ru ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
  • УстановитС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ‡Π΅Ρ‚ΠΊΠΈΠΉ definition of done, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² Ρ‚ΠΎΠΌ числС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ качСства. ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² DOD ΠΏΡƒΠ½ΠΊΡ‚, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Β«ΠΏΡ€ΠΈΠ΅ΠΌΠΊΡƒΒ» Ρ„ΠΈΡ‡ΠΈ, Ссли Π΅ΡΡ‚ΡŒ связанныС с Π½Π΅ΠΉ Π±Π°Π³ΠΈ.
  • Для MVP Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ миграция ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ.

Компании ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с Ρ‚Π΅Ρ…Π΄ΠΎΠ»Π³ΠΎΠΌ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Ρ… стратСгий Ρ‚Ρ€ΠΈ.

  • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ всС с нуля. Π­Ρ‚ΠΎ ΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ систСму Π² состоянии, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° постоянно Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ измСнСниям, Ссли всС зашло слишком Π΄Π°Π»Π΅ΠΊΠΎ ΠΈ ΡƒΠΆΠ΅ Π½Π΅Ρ‚ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ гибкости.
  • Π”Π΅Π»Π°ΡŽΡ‚ постСпСнный Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. Π—Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Ρ‚Π΅Ρ…Π΄ΠΎΠ»Π³Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² бэклог Π½Π°Ρ€Π°Π²Π½Π΅ с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. Π­Ρ‚ΠΎ замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡, Π½ΠΎ бизнСс ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π° компромиссы.
  • Π‘ΠΌΠΈΡ€ΡΡŽΡ‚ΡΡ с Ρ‚Π΅Ρ…Π΄ΠΎΠ»Π³ΠΎΠΌ. Если Ρƒ вас Π½Π΅ стартап, Π° обновлСния Π½ΡƒΠΆΠ½Ρ‹ Ρ€Π°Π· Π² ΠΏΠΎΠ»Π³ΠΎΠ΄Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½, ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Β«Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ β€” Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°ΠΉΒ». Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ошиблись, Π²Ρ‹ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ 1.

Other…

Как Ρ‚Ρ‹ дСлаСшь ΡΡΡ‚ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ?

Π‘Ρ‹Π»ΠΈ Π»ΠΈ кСйсы ΠΊΠΎΠ³Π΄Π° эстимации ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ?

КакоС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅

Как ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ

Π§Ρ‚ΠΎ дСлаСшь, Ссли Π½Π΅ моТСшь ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ со слоТными Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ?

Π‘Ρ‹Π»Π° Π»ΠΈ докумСнтация Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π°?

Lifecycle Π·Π°Π΄Π°Ρ‡ΠΈ

Π§Ρ‚ΠΎ для тСбя clean code

CORS

Π’Ρ€ΠΎΡ‚Ρ‚Π»ΠΈΠ½Π³