ClangFormat рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рд╕реНрд╡рд░реВрдкрдг: рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди



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

рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкреНрд░рд╛рд░реВрдкрдг рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ


рдЬреНрдпрд╛рджрд╛рддрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдХреЛрдб рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд┐рдпрдо рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧреА рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ? рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ - рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ, рдПрд╕реНрдЯрд╛рдЗрд▓, рдЕрд╡рд┐рд╢реНрд╡рд╛рд╕, - рд▓реЗрдХрд┐рди рдЙрдирдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред

рдлрд╝реЙрд░реНрдореЗрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛред рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ ClangFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрд╛рдпрд╛, рдЬрд╣рд╛рдВ C ++ рдореБрдЦреНрдп рднрд╛рд╖рд╛ рдереАред рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЯреАрдо рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдХреЛрдб рд╢реИрд▓реА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ред рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рди рдХреЗрд╡рд▓ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ C, рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬрд╛рд╡рд╛, рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрд╕-6.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯреАрдо рд╢реБрд░реВ рдХреА

git diff -U0 - рдХреЛрдИ-рд░рдВрдЧ рдирд╣реАрдВ | clang-format-diff-6.0 -i -p1 , рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ:


  1. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗрд╡рд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ xml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдереАрдВ, рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдФрд░ рд╕реНрд╡рд░реВрдкрдг рдХрд░рддреЗ рд╕рдордп рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рдерд╛ред рдлрд┐рд░, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЙрд╕рдиреЗ рдХреНрдпреВрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдкреНрд░реЛ-рдлрд╛рдЗрд▓реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╢рд╛рдпрдж рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдХреА рддрд░рд╣ред
  2. рдЧрд┐рдЯ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рдерд╛ред

рдирд┐рд░реНрдгрдп


рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢-рд▓рд┐рдкрд┐ рдерд╛, рдкреНрд░реА-рдХрдорд┐рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛ - рд╣реБрдХ рдлреЙрд░ рдЧрд┐рдЯ

#!/bin/sh CLANG_FORMAT="clang-format-diff-6.0 -p1 -v -sort-includes -style=Chromium -iregex '.*\.(cxx|cpp|hpp|h)$' " GIT_DIFF="git diff -U0 --no-color " GIT_APPLY="git apply -v -p0 - " FORMATTER_DIFF=$(eval ${GIT_DIFF} --staged | eval ${CLANG_FORMAT}) echo "\n------Format code hook is called-------" if [ -z "${FORMATTER_DIFF}" ]; then echo "Nothing to be formatted" else echo "${FORMATTER_DIFF}" echo "${FORMATTER_DIFF}" | eval ${GIT_APPLY} --cached echo " ---Format of staged area completed. Begin format unstaged files---" eval ${GIT_DIFF} | eval ${CLANG_FORMAT} | eval ${GIT_APPLY} fi echo "------Format code hook is completed----\n" exit 0 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ:
GIT_DIFF = "git diff -U0 --no-color" - рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрд╕-6.0 рдкрд░ рдЗрдирдкреБрдЯ рд╣реЛрдЧрд╛ ред

  • -U0 : рдЖрдорддреМрд░ рдкрд░ рдЧрд┐рдЯ рднрд┐рдиреНрди рддрдерд╛рдХрдерд┐рдд "рд╕рдВрджрд░реНрдн" рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдХреЛрдб рдХреА рдХреБрдЫ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░реЗрдЦрд╛рдПрдВ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрдЯ-6.0 рдЙрдиреНрд╣реЗрдВ рднреА рдлреЙрд░рдореЗрдЯ рдХрд░рддрд╛ рд╣реИ! рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

CLANG_FORMAT = "clang-format-diff-6.0 -p1 -v -sort -style = Chromium -iregex '*ред * (Cxx | cpp | hpp | h) $'" - рдорд╛рдирдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИред рдЗрдирдкреБрдЯред

  • clang-format-diff-6.0 - рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ clang-format-6.0 рдкреИрдХреЗрдЬ рд╕реЗред рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рдЗрд╕ рдПрдХ рдкрд░ рдереЗред
  • -p1 рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , git diff рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • -рд╕реНрдЯрд╛рдЗрд▓ = рдХреНрд░реЛрдорд┐рдпрдо - рд░реЗрдбреА-рдореЗрдб рдХреЛрдб рд╕реНрд╡рд░реВрдк рд╢реИрд▓реА рдкреНрд░реАрд╕реЗрдЯред рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди: LLVM, Google, Mozilla, WebKit ред
  • -sort- рд╢рд╛рдорд┐рд▓ рд╣реИ - рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ #include рдирд┐рд░реНрджреЗрд╢реЛрдВ (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдкред
  • -iregex 'ред *ред \ _ (cxx | cpp | hpp | h) $' рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреА рд╣реИред рдХреЗрд╡рд▓ рдЙрди рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЧрд┐рд░рдиреЗ рдФрд░ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЧреНрд▓рд┐рдЪ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рдХреЛ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреВрд░рдХ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред C ++ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк C / рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдЬрд╛рд╡рд╛ / рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

GIT_APPLY = "git apply -v -p0 -" - рдкрд┐рдЫрд▓реЗ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреИрдЪ рдХреЛ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

  • -p0 : рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, git рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ рдкрд╣рд▓реЗ рдШрдЯрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ рдЬреЛ clang-format-diff-6.0 рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдХрд┐рдкрд┐рдВрдЧ рдпрд╣рд╛рдБ рдЕрдХреНрд╖рдо рд╣реИред

FORMATTER_DIFF = $ (eval $ {GIT_DIFF} --stagedред Eval $ {CLANG_FORMAT}) - рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдкрд░рд┐рд╡рд░реНрддрдиред

рдЗрдХреЛ "$ {FORMATTER_DIFF}" | eval $ {GIT_APPLY} - рдЕрдиреБрдХреНрд░рдорд┐рдд (рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж) рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рд╣реБрдХ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реНрд╡рд░реВрдкрдг рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдкреНрд░рд╛рд░реВрдкрдг рдЬреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд╣реИ рдФрд░ рдЕрд▓рдЧ рд╕реЗ рдХреНрдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

eval $ {GIT_DIFF} | eval $ {CLANG_FORMAT} | eval $ {GIT_APPLY} - рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдирд╣реАрдВ рд╣реИ (рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдХреБрдЫ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ)ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рднреА рдореМрдЬреВрджрд╛ рдкрд░рд┐рд╡рд░реНрддрди (рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рддрд╣рдд), рдФрд░ рди рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рд╕реЗред рдпрд╣ рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдирд┐рд░реНрдгрдпред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рднреА рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк -i рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде "| eval $ {GIT_APPLY}" рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ $ {CLANG_FORMAT} рдХреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ред

рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рди


  1. Clang-format-6.0 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  2. cd / tmp && mkdir temp_project && cd temp_project
  3. рдЧрд┐рдЯ рдЗрдирд┐рдЯ
  4. рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд╛рдо рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рднреА C ++ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЧрд▓рдд рдХрд░реЗрдВ редpp ред рдЕрдзрд┐рдорд╛рдирддрдГ> 50 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЗред
  5. рдКрдкрд░ рджрд┐рдЦрд╛рдИ рдЧрдИ .it / рд╣реБрдХ / рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдмрджреНрдз рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВред
  6. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ (git рдХреЗ рд▓рд┐рдП): chmod + x .git / рд╣реБрдХ / рдкреНрд░реА-рдХрдорд┐рдЯ ред
  7. рд╕реНрдХреНрд░рд┐рдкреНрдЯ .it / рд╣реБрдХ / рдкреНрд░реА-рдХрдореЗрдВрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдПрдБ, рдпрд╣ рджреБрднрд╛рд╖рд┐рдпрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛, "рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  8. рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде file.cpp рдХреЛ int main рдмрдирд╛рдПрдВ () {for (int i = 0; i <100; ++ i) {std :: cout << "рдкрд╣рд▓рд╛ рдорд╛рдорд▓рд╛" << std :: endl; std :: cout << "рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛" << std :: endl; std :: cout << "рддреАрд╕рд░рд╛ рдорд╛рдорд▓рд╛" << std :: endl; }} рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдпрд╛ рджреВрд╕рд░реА рдЦрд░рд╛рдм рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рдеред рдЕрдВрдд рдореЗрдВ - рд▓рд╛рдЗрди рдлреАрдб!
  9. git add file.cpp && git рдкреНрд░рддрд┐рдмрджреНрдз -m "file.cpp" рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ "рдкреИрдЪ рдлрд╝рд╛рдЗрд▓ редpp рдмрд┐рдирд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ ред "
  10. git log -p -1 рдХреЛ рдПрдХ рд╕реНрд╡рд░реВрдкрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  11. рдЕрдЧрд░ file.cpp рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ рднрд┐рдиреНрди рд░реВрдк рдореЗрдВ рд╕реНрд╡рд░реВрдкрдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЧрд▓рдд.рдкрдВрдк рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдЙрдирдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВред git рдкреНрд░рддрд┐рдмрджреНрдз -a -m "рдХреЗрд╡рд▓ рд╕реНрд╡рд░реВрдк рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ" рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рднрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдиреБрдХрд╕рд╛рди рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ


git diff --staged (рдЬреЛ рдпрд╣рд╛рдБ $ {GIT_DIFF} --staged ) рд╣реИ рдХреЗрд╡рд▓ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрд╕-6.0 рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ git рдРрдб рдХрд░реЗрдВ , рдФрд░ рдлрд┐рд░ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓реЗрдВ, рдлрд┐рд░ рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрд╕-6.0 рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб (рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ) рдлреЙрд░реНрдореЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдлрд╛рдЗрд▓ рдХреЛ git рдРрдб рдХреЗ рдмрд╛рдж рдФрд░ рдХрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдкрд╛рджрд┐рдд рди рдХрд░реЗрдВред

рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

  1. рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝реЗрдВ std :: endl to file.cpp , "рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛" ред (std :: cout << "рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛" << std :: endl << std :: endl;) рдФрд░ рд▓рд╛рдЗрди рдХреЗ рдкрд╣рд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рдХреБрдЫ рдЯреИрдмред
  2. git add file.cpp
  3. "рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ" рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди (рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ) рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдЕрдкрдиреЗ рд╕реНрдерд╛рди (!) рдореЗрдВ рдмрдирд╛ рд░рд╣реЗред
  4. git рдХрдорд┐рдЯ-рдореА "рдХрдореЗрдЯреА рдСрди рдлреЙрд░реНрдореЗрдЯ рдПрд░рд░" ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ "рддреНрд░реБрдЯрд┐: рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп:" рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддред git apply рдореЗрдВ clang-format-diff-6.0 рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдкреИрдЪ рдХрд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ git рдХрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рди рдмрджрд▓реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк (рдмрд┐рдирд╛ рдзрдХреНрдХрд╛ рджрд┐рдП) рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдирдП рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


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


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрд╕ 6.0 рдПрдХ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдкреИрдЪ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬреАрдЖрдИрдЯреА рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдз рднрд╛рдЧ рдХрд╛ рдХреЛрдб рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдХреНрд▓реИрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ-рдбрд┐рдлрд░реЗрдВрдЯ рд╣реИ ред рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдХрдорд╛рдВрдб git diff -U0 --no-color HEAD ^ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рд░реВрдкрдг рдкреИрдЪ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ clang-format-diff-6.0 -p1 -v -sort -style = Chromium -iregexред *ред \ _ (cxx | cpp | hpp | h) $ ' ред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЙрдкрд╛рдп рдкрд┐рдЫрд▓реЗ рдХрдорд╛рдВрдб рдореЗрдВ -i рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдПрдХ рдкреИрдЪ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдЧреАред рдпрджрд┐ рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд▓реИрдВрдЧ-рдкреНрд░рд╛рд░реВрдк-6.0 -i -sort -style = Chromium file.cpp рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ рд╣реИ git add file.cpp рдФрд░ git рдХрдорд┐рдЯ --amend ред

рдПрдХ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ .clang- рдкреНрд░рд╛рд░реВрдк рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рд╕реА рдПрдХ рдкреНрд░реАрд╕реЗрдЯ рдХреЗ рдЬрд┐рддрдирд╛ рдирд┐рдХрдЯ рд╣реЛрдЧрд╛, рдЙрддрдиреА рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред (рдпрд╣рд╛рдВ рдЗрд╕реЗ -рд╕реНрдЯрд╛рдЗрд▓ = рдХреНрд░реЛрдорд┐рдпрдо рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред


рдбрд┐рдмрдЧрд┐рдВрдЧ


рдпрджрд┐ рдЖрдк рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрдкрд╛рджрди (рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдирд╣реАрдВ) рдкрд░ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдЧреА, рддреЛ git diff -U0 --no-color рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред clang-format-diff-6.0 -p1 -v -sort -style = Chromium -iregex 'ред *ред \ _ (cxx | cpp | hpp | h) $' рдЖрдк рдпрд╣ рднреА рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╡реАрдирддрдо рдХрдорд┐рдЯ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рддреАрд╕ рдкрд░: git рдлрд╝рд┐рд▓реНрдЯрд░-рд╢рд╛рдЦрд╛ -f-tree- рдлрд╝рд┐рд▓реНрдЯрд░ "$ {PWD} /ред git / рд╣реБрдХ / рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдмрджреНрдз" --prune-blank HEAD ~ 30..HEAD ред рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдкрд┐рдЫрд▓реЗ рдХрдорд┐рдЯреНрд╕ рдХреЛ рдлреЙрд░реНрдореЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдирдХреА рдЖрдИрдбреА рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдореЗрдВ рдРрд╕реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ! рдмрд╛рдж рд╡рд╣ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдирд┐рд░реНрдгрдп рдиреБрдХрд╕рд╛рди рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрдкрдиреА рдХреЛрдб рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреЛрдб рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдХреНрд▓реИрдВрдЧ-рдкреНрд░рд╛рд░реВрдк-рднрд┐рдиреНрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдордиреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЧрд┐рдЯ-рд╣реБрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рдХрд░реЗрдВред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреНрд▓реИрдВрдЧ -рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк ClangFormat рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ ред

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


All Articles