рд╕рд╛рд░реНрдердХ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдирдХ



рдкрд░рд┐рдЪрд┐рддреЛрдВ рдХреЗ рдирд╛рдо рдкрд░ рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ред рдПрдХ рдкрд░рд┐рдЪрд┐рдд рддрд╕реНрд╡реАрд░?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк git-flow рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рдЧрд┐рдЯ рдореЗрдВ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реЗрдЯ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╣рдо рд╕рд╣реА рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдмрд╛рддреЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдирд╛рдордХрд░рдг рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдмрд╣реБрдд рдХрдо рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ Git рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░рд╛ рдирд╛рдо рдпрд░реНрдЬрд╝рд╛рди рддрд╢реНрдмреЗрдирдмрд╛рддреЛрд╡ рд╣реИ, рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕.рдорд╛рд░реНрдХреЗрдЯ рдЯреАрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдЖрдЬ рдореИрдВ рд╣реИрдмрд░ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╣рдо рдПрдХ рдЯреАрдо рдореЗрдВ рд╕рд╛рд░реНрдердХ рдХрдорд┐рдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред


рдирд╛рдордХрд░рдг рдкрд░ рд╕рдордЭреМрддреЗ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЧрд┐рдЯ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реА рдЯреАрдо рдкрд░ рдерд╛ред рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд┐рдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

SECRETMRKT-700:     , . SECRETMRKT-701, SECRETMRKT-702:     ... 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрд╛ рдЬреИрд╕реЗ рд╡рд╣ рдЪрд╛рд╣рддрд╛ рдерд╛: рдХрд┐рд╕реА рдиреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛, рдХрд┐рд╕реА рдиреЗ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛, рдХрд┐рд╕реА рдиреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдмрд╛рдзрд╛рдУрдВ рдкрд░ рдерд╛ред рджреВрд╕рд░реЗ, рдХрд╛рд░реНрдп рд╕рдВрдЦреНрдпрд╛рдПрдВ рдЬреЛ рдХрдорд┐рдЯ рдореЗрдВ рдореМрдЬреВрдж рдереАрдВ, рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧреА рдкрд╛рда рдХреЛ рдЫреЛрдЯрд╛ рдХрд░ рджреЗрддреА рд╣реИрдВред рдЗрд╕ рд╕рдм рдиреЗ рдЧрд┐рдЯ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рджрд┐рдпрд╛ред

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдордиреЗ рдЯреАрдо рдореЗрдВ рдкрд░рдореНрдкрд░рд╛рдЧрдд рдХрдорд┐рдЯ рдорд╛рдирдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрдорд┐рд╢рди рдореЗрдВ рдХрдорд┐рдЯ рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдХрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХреАред рдирддреАрдЬрддрди, рдХрдорд┐рдЯ рдмрджрд▓ рдЧрдП рд╣реИрдВ рдФрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

 refactor(tutorial):      feat(products):      fix(products):      

рдХрд╣рд╛рдиреА рдкрдврд╝рдирд╛ рдФрд░ рдмрджрд▓рд╛рд╡ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ред рд╣рдордиреЗ рдХрд╛рд░реНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдкрд░рдореНрдкрд░рд╛рдЧрдд рдХрдорд┐рдЯреНрд╕ рдХрдиреНрд╡реЗрдВрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдХрдорд┐рдЯ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ Git рдореЗрдВ рд╕рдорд╛рди рдЖрджреЗрд╢ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред



рдмреЗрд╕реНрдЯ рдкреНрд░реИрдХреНрдЯрд┐рд╕, рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ, рдФрд░ рдирд╛рдордХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди


рдпрджрд┐ рдЖрдк рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдХрд┐рди рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдпреБрдХреНрддрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рд▓реЗрдЦред рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рд╡рд┐рд╖рдп рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╡реНрдпрд╛рдкрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдХрдореА рдФрд░ рд╡рд┐рдХрд╛рд░ рдХреА рднрд╛рд╡рдирд╛ рд╣реИред
  • рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдорд╛рдирдХред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВред рд╡реЗ рдирд┐рдпрдореЛрдВ рдХреА рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдПрдХ рдмрдбрд╝реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпреЗ рдорд╛рдирдХ рдЦреБрд▓реЗ-рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдп рдореЗрдВ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╣рдореЗрдВ рдХрдорд┐рдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рдкрд░рдореНрдкрд░рд╛рдЧрдд рдХреЙрдорд┐рдЯ рдкрджреНрдзрддрд┐ рдЕрдиреНрдп рдорд╛рдирдХреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд░реАрдмреА рдкрд░реАрдХреНрд╖рд╛ рдХреА рд╣рдХрджрд╛рд░ рд╣реИ:

  1. рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕рдмрд╕реЗ рдЖрдо рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
  2. рдЕрдзрд┐рд╡реЗрд╢рди рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЛ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╕рдордп-рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред
  3. рд╕рдореНрдореЗрд▓рди рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрдИ рдмрдбрд╝реЗ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЬреИрд╕реЗ рдпрд╛рд░реНрдЧ рдФрд░ рд▓рд░реНрди ) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдкреНрд▓рд╕рд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рд▓реЙрдЧ рдХреЗ рд╕реНрд╡рдд: рдЧрдарди рдХреА рддреИрдпрд╛рд░реА рдХрд░реВрдБрдЧрд╛ред

рдЗрд╕ рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 fix(products):             -     .  : SECRETMRKT-578, SECRETMRKT-602 



рдкрд░рдореНрдкрд░рд╛рдЧрдд рдХрдорд┐рдЯ рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБ


  • рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
    <рдкреНрд░рдХрд╛рд░> (<рдЧреБрдВрдЬрд╛рдЗрд╢>): <рд╡рд┐рд╖рдп>

    <Body>

    <рдкрд╛рдж>
  • рдХрдорд┐рдЯ рдореЗрдВ рдПрдХ рд╣реЗрдбрд░, рдПрдХ рдмреЙрдбреА рдФрд░ рдПрдХ рдкрд╛рдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдкреНрд░рддрд┐рдмрджреНрдз рдХрд╛ рд╣реЗрдбрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
  • рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд░рддрдм рдХреЗ рд╕рд╛рде, рдлрд┐рдХреНрд╕ (рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╡рд┐рдирд┐рдпрдорд┐рдд рд╣реИ), рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
  • рдПрдХ рдХрдорд┐рдЯ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖ рд╣реИред рдХреНрд╖реЗрддреНрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рдорд╛рдирдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг: рдПрд╕реЗрд▓рд┐рдВрдЯ, рдЧрд┐рдЯ, рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдЖрджрд┐ред
  • рдкреНрд░рдХрд╛рд░ / рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдмрджреНрдз рд╡рд┐рд╡рд░рдг рддреБрд░рдВрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╢рд░реАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╢рд░реАрд░ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдкрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ, рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд╕рдВрджрд░реНрдн рдпрд╛ рдЕрдиреНрдп рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╛рдж рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рд╢рд░реАрд░ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЕрдзрд┐рд╡реЗрд╢рди рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:


  • рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ ред
  • рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
    рдирд┐рд░реНрдорд╛рдгрдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ рдпрд╛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдмрджрд▓реЗрдВ
    ciCI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ
    рдбреЙрдХреНрд╕рдкреНрд░рд▓реЗрдЦрди рдЕрджреНрдпрддрди
    рдХрд░рддрдмрдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛
    рдареАрдХрдмрдЧ рдареАрдХ рдХрд░рдирд╛
    рдкрд░реНрдлрд╝рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░
    refactorрдмрдЧ рдХреЛ рдареАрдХ рдХрд┐рдП рдпрд╛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХреЛрдб рдХрд╛ рд╕рдВрдкрд╛рджрди
    рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВрдкрд┐рдЫрд▓реЗ рдХрдорд┐рдЯреНрд╕ рдореЗрдВ рд░реЛрд▓рдмреИрдХ
    рд╢реИрд▓реАрдХреЛрдб рд╢реИрд▓реА рд╕рдВрдкрд╛рджрди (рдЯреИрдм, рд╕рдВрдХреЗрдд, рдЕрд╡рдзрд┐, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо, рдЖрджрд┐)
    рдХрд╕реМрдЯреАрдЯреЗрд╕реНрдЯ рдЬреЛрдбрд╝рдирд╛
  • рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рдордиреЛрджрд╢рд╛ рдореЗрдВ рд╡рд░реНрдгрди рд▓рд┐рдЦрддреЗ рд╣реИрдВ , рдЬреИрд╕реЗ рдХрд┐ рдЦреБрдж рдЧрд┐рдЯред
    рдорд░реНрдЬ рд╢рд╛рдЦрд╛ 'рдлрд┐рдХреНрд╕ / SECRETMRKT-749-fix-typos-in-title'
  • рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз рд╡рд┐рд╡рд░рдг рдЕрдкрд▓реЛрдб рди рдХрд░реЗрдВред




рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрдорд┐рдЯ рдорд╛рдирдХ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд╛рд░реНрдирд╛ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ



рдмрд╕ рдХрдорд┐рдЯ рдХреЗ рд╕рд╣реА рдирд╛рдо рдкрд░ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ?


рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдЯреВрд▓ рдЪрд╛рд╣рд┐рдП: рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдкреБрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрдорд┐рдЯ рдЬреЗрдирд░реЗрдЯрд░ рдФрд░ рдХрдорд┐рдЯред



рдирд╛рдЧрд░рд┐рдХреЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ


рдпрд╣ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд┐рдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдореЗрдЯреА рдХреЛ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реИред

  1. рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХрдорд┐рдЯрдореЗрдВрдЯ рдпреВрдЯрд┐рд▓рд┐рдЯреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

     npm i -g commitizen 
  2. рдЕрдЧрд▓рд╛, cz- рдЕрдиреБрдХреВрд▓рди рдПрдбреЗрдкреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдирд╛рдЧрд░рд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

     npm i -D cz-customizable 
  3. рдЖрдЗрдП рд╣рдо рдХрдорд┐рдЯрд┐рдЬрди рдмрдирд╛рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ cz- рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ ./config/git рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВред рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдХреЛ рд▓рд┐рдЯ рди рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╕рд╛рдордЧреНрд░реА:

    рдХрдорд┐рдЯрдореЗрдВрдЯ рджрд┐рдЦрд╛рдУред js
     "use strict"; module.exports = { //         types: [ { value: "build", name: "build:      " }, { value: "ci", name: "ci:  CI    " }, { value: "docs", name: "docs:  " }, { value: "feat", name: "feat:   " }, { value: "fix", name: "fix:  " }, { value: "perf", name: "perf:     " }, { value: "refactor", name: "refactor:         " }, { value: "revert", name: "revert:    " }, { value: "style", name: "style:    (, , ,   ..)" }, { value: "test", name: "test:  " } ], // .    ,    scopes: [ { name: "components" }, { name: "tutorial" }, { name: "catalog" }, { name: "product" } ], //         (  'fix') /* scopeOverrides: { fix: [ {name: 'style'}, {name: 'e2eTest'}, {name: 'unitTest'} ] }, */ //    messages: { type: "   ?", scope: "\n ,    ():", //   allowCustomScopes  true customScope: "  :", subject: "     :\n", body: '   ().  "|"   :\n', breaking: " BREAKING CHANGES ():\n", footer: "    (,   ). : SECRETMRKT-700, SECRETMRKT-800:\n", confirmCommit: "   ?" }, //    allowCustomScopes: true, //   Breaking Changes allowBreakingChanges: false, //     footerPrefix: " :", // limit subject length subjectLimit: 72 }; 


  4. рдкреИрдХреЗрдЬ рдореЗрдВ cz- рдЕрдиреБрдХреВрд▓рди рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред рд╕рдВрджреЗрд╢:

    Package.json рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджрд┐рдЦрд╛рдПрдВ
     { "config": { "commitizen": { "path": "node_modules/cz-customizable" }, "cz-customizable": { "config": "config/git/commitizen.js" } }, } 

  5. рдЪрд▓рд┐рдП рд░рд┐рдЬрд▓реНрдЯ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░реЗрдВ:

     git cz 

рдХрдорд┐рдЯрдореЗрдВрдЯ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдкрд╣рд▓реЗ рдХрдорд┐рдЯ рдХреЗ рдкреНрд░рдХрд╛рд░, рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рдХреНрд░рдордмрджреНрдз рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд╛рда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд┐рд╡рд░рдг рдореЗрдВ, рдкрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдФрд░ рдЖрдкрдХреА рд╕рд╣рдорддрд┐ рдХреЗ рдмрд╛рдж, рдПрдХ рдХрдорд┐рдЯ рдмрдирд╛рдПрдЧрд╛ред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдирд╛рдЧрд░рд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ cz-cusomizable рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ



рдХрд░реНрдХрд╢ рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


  1. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд░реНрдХрд╢ рдФрд░ рдХрдорд┐рдЯрдореЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

     npm i -D husky @commitlint/cli 
  2. рдХрд░реНрдХрд╢ рдХреЗ рд╕рд╛рде, рд╣рдо рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдЬрд╛рдВрдЪ рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, package.json рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реБрдХ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдХрдорд┐рдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред js рдлрд╝рд╛рдЗрд▓:

    Package.json рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджрд┐рдЦрд╛рдПрдВ
     { "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS -g './config/git/commitlint.js'" } }, "devDependencies": { "@commitlint/cli": "^7.2.1", "husky": "^1.1.3", } 


  3. рд▓рд┐рдВрдЯрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрдореЗрдЯреА рдмрдирд╛рдПрдВред рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ ./config/git рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВред рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА:

    рдХрдорд┐рдЯрдореЗрдВрдЯ рджрд┐рдЦрд╛рдПрдВред js
     //     @commitlint/config-conventional module.exports = { rules: { //        "body-leading-blank": [2, "always"], //         "footer-leading-blank": [2, "always"], //    72  "header-max-length": [2, "always", 72], //       "scope-case": [2, "always", "lower-case"], //      "subject-empty": [2, "never"], //     '.' "subject-full-stop": [2, "never", "."], //       "type-case": [2, "always", "lower-case"], //      "type-empty": [2, "never"], //      "type-enum": [ 2, "always", [ "build", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test" ] ] } }; 



рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдХрдорд┐рдЯ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреА :)

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдХрдореЗрдВрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ



рддреЛ рдХреНрдпрд╛ рдирд╛рдЧрд░рд┐рдХ рдпрд╛ рдХрдорд┐рдЯрдореЗрдВрдЯ рдЪреБрдирдирд╛ рд╣реИ?


рд╡рд╣ рджреЛрдиреЛрдВ, рдФрд░ рджреВрд╕рд░рд╛! рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд▓рд╛рддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред


рдорд╛рдирдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?


рдпрд╣ рдПрдХ рдмреЗрд╣рдж рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рд╣реИред рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдПрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ; рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдЗрд╕ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдпреЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдПрдВ, рдмрджрд▓реЗрдВ, рдЬреЛрдбрд╝реЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдареАрдХ рдХрд░реЗрдВред

рд╡реИрд╕реЗ, Git рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 [[imperative-mood]] Describe your changes in imperative mood, eg "make xyzzy do frotz" instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy to do frotz", as if you are giving orders to the codebase to change its behavior. 


рдХрд┐рд╕реА рднреА рд╕рдореНрдореЗрд▓рдиреЛрдВ рд╕реЗ рдХреНрдпреЛрдВ рдЪрд┐рдкрдХреЗ рд░рд╣реЗ? рдХреНрдпрд╛ рдпрд╣ рд╕рдордп рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИ?


рдЗрд╕рдХреЗ рд▓рд╛рдпрдХред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдо рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЗрдЪреНрдЫреБрдХ рд╣реЛ рдЧрдП рд╣реИрдВред рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрди рдпрд╛ рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдордЭрдирд╛ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░рд╛ рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЯреАрдо рдореЗрдВ рдкреБрдирдГрдкреВрд░реНрддрд┐ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдорд╛рдирдХ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред


рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:


Source: https://habr.com/ru/post/hi431432/


All Articles