рдПрд╕рд╡реАрдПрди рд╣реБрдХ: рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрд╢реЛрдзрди рдЯрд┐рдкреНрдкрдгреА

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдореГрддрд┐ рдХрд╛ рдереЛрдбрд╝рд╛ рддрд╛рдЬрд╝рд╛

рд╣реБрдХ рдХреНрдпрд╛ рд╣реИ?


рдирд╣реАрдВ, рдпрд╣ рд╕реНрдкреАрд▓рдмрд░реНрдЧ рдХреА рдлрд┐рд▓реНрдо рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╣рдм рдкрд░ рд╣реИрдВред рдпрд╣ рд╡рд╣ рд╣реБрдХ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдИрд╡реЗрдВрдЯ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ :) рдмрд╕ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИред рд╡реЗ рди рдХреЗрд╡рд▓ рдПрд╕рд╡реАрдПрди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЬреАрдЖрдИрдЯреА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рд╣реБрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, рддреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣реБрдХ рдШреЛрдВрд╕рд▓рд╛ рд╣реИред рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рд╣реБрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдирд╛рдо рдЯреНрд░реИрдХ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред
$ ls repos/hooks/ post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl $ 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╣реБрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рдШрдЯрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реА-рд╣реБрдХ рдЖрдЧред рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж - рд╣реБрдХред
* рд╕реНрдЯрд╛рд░реНрдЯ-рдХрдорд┐рдЯ - рдПрдХ рд▓реЗрдирджреЗрди рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ; рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
* рдкреНрд░реА-рдХрдорд┐рдЯ - рд▓реЗрди-рджреЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреИрд░-рдЦрд╛рд▓реА рд▓реЙрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
* рдкреЛрд╕реНрдЯ-рдХрдорд┐рдЯ - рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рдж рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдИ-рдореЗрд▓ рднреЗрдЬрдиреЗ рдпрд╛ рднрдВрдбрд╛рд░рдг рдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
* рдкреВрд░реНрд╡-рдкреБрди: рдкрд░рд┐рд╡рд░реНрддрди-рдкрд░рд┐рд╡рд░реНрддрди - рд╕рдВрд╢реЛрдзрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
* рдкреЛрд╕реНрдЯ-рд░рд┐рд╡рдкреНрд░реЙрдк-рдкрд░рд┐рд╡рд░реНрддрди - рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдИ-рдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
* рдкреЛрд╕реНрдЯ-рд▓реЙрдХ , рдкреЛрд╕реНрдЯ-рдЕрдирд▓реЙрдХ , рдкреНрд░реА-рд▓реЙрдХ , рдкреНрд░реА-рдЕрдирд▓реЙрдХ - рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

рд╕рдВрд╢реЛрдзрди рдХреА рдЯрд┐рдкреНрдкрдгреА рдмрджрд▓реЗрдВ


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

рджрд╛рдИрдВ рдУрд░ рд╣реБрдХред


* рдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдмрд┐рдирд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╣реБрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рдкреБрди: рдкрд░рд┐рд╡рд░реНрддрди-рдкрд░рд┐рд╡рд░реНрддрди

 #!/bin/sh #  . REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" ACTION="$5" #       (   ) if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0 else echo "Changing revision properties other than svn:log is prohibited" >&2 exit 1 fi 


рдмрд╛рдИрдВ рдУрд░ рд╣реБрдХред


рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рд╣реБрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рдкреБрди: рдкрд░рд┐рд╡рд░реНрддрди-рдкрд░рд┐рд╡рд░реНрддрдиред bat

 @ECHO OFF ::  . set repository=%1 set revision=%2 set userName=%3 set propertyName=%4 set action=%5 ::     (   ) if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME ::     (     ) if /I not "%action%" == "M" goto ERROR_ACTION :: ,      . set bIsEmpty=true for /f "tokens=*" %%g in ('find /V ""') do ( set bIsEmpty=false ) if "%bIsEmpty%" == "true" goto ERROR_EMPTY goto :eof :ERROR_EMPTY echo Empty svn:log messages are not allowed. >&2 goto ERROR_EXIT :ERROR_PROPNAME echo Only changes to svn:log messages are allowed. >&2 goto ERROR_EXIT :ERROR_ACTION echo Only modifications to svn:log revision properties are allowed. >&2 goto ERROR_EXIT :ERROR_EXIT exit /b 1 


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

рдкреАрдПрд╕ рдореБрдЭреЗ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА, рд╕рд╛рде рд╣реА рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рднреА

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


All Articles