Git рдФрд░ Makefile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВ

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


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


рд▓реЗрдЦрдХ django / uwsgi / nginx рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ GNU / Linux рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред


рд▓реЛрдб рд╣реЛ рд░рд╣реЗ рдкреГрд╖реНрда


рд╣рдо рдорд╛рдирдХ рд╡рд┐рдЬреЗрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВрдЧреЗред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВрдЧреЗ (рдЬреЛ рд╕рд╛рдЗрдЯ рдХреЗ рдбреЛрдореЗрди рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред


рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рднреАрддрд░, рдкреГрд╖реНрдареЛрдВ рдХреЛ wget -r рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрди: рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдХреЛ рдореБрдЦреНрдп рдкреГрд╖реНрда рд╕реЗ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ 5 рд╕реНрддрд░ рддрдХ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ -l рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдпрджрд┐ рд╣рдо рдореАрдбрд┐рдпрд╛ рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдкреЗрдЬ рд╕реЗ рдЕрд▓рдЧ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ -X рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреВрд░рд╛ рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


mkdir primer cd primer wget -r -nH -X ,static --restrict-file-names=nocontrol . 

-nH рдХрд╛ рдорддрд▓рдм рд╣реИ -рдХреЛрдИ -рдореЗрдЬрдмрд╛рди-рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, wget -r example.com example.com/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдбрд╛рд▓ рджреЗрдЧрд╛, рдФрд░ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣реЛрд╕реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИред


рд╡рд┐рдХрд▓реНрдк - рдЫрд▓-рдлрд╛рдЗрд▓-рдирд╛рдо рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╕рдордп URL рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЗ рднрд╛рдЧрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рдиреЛрдХреЛрдиреНрдЯреНрд░реЛрд▓ рдХреЗ рдПрдХ рдореВрд▓реНрдп рдХрд╛ рдЕрд░реНрде рд╣реИ, рднрд╛рдЧрдиреЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдФрд░ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд▓рд┐рдВрдХ рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдкреГрд╖реНрда рдереЛрдбрд╝реЗ рдмрджрд▓реЗ рд╣реБрдП рдирд╛рдореЛрдВ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдХреИрд╕реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, --restrict-file-names = nocontrol рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╣ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рд╣реИ ред


рдЧрд┐рдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ


Git init рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ .it рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╣реЛ рдЬреЛ рд╕рд╛рдЗрдЯ рдХреЗ рдЦреБрд▓реЗ рдкрдиреНрдиреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдВред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдкреВрд░реНрдг рдХрдорд╛рдВрдб рдЬреЛ рдПрдХ рд╕рд╛рдл (рдирдВрдЧреЗ) рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рддрд╛ рд╣реИ ../.git-primer рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


 git init --bare ../.git-primer 

рдЗрд╕ рдЧреИрд░-рдорд╛рдирдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧрд┐рдЯ-рдбреАрдЖрдИрдЖрд░ рдФрд░ рд╡рд░реНрдХ-рдЯреНрд░реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


 git --git-dir=../.git-primer --work-tree=. add . 

рдореЗрдХрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдирд╛


рдЪрд▓реЛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:


 SITES := example primer all : $(SITES) .PHONY : $(SITES) 

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


рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 $(SITES) : if [[ -d .git-$@ ]]; \ then \ $(get-data); \ $(mgit) add . && \ if [[ -n "`$(mgit) status --porcelain`" ]]; then \ $(mgit) commit -m "Update $@."; \ fi \ else \ $(init-git); \ fi 

рдпрд╣ рдирд┐рдпрдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХрд▓ рд╢реЗрд▓ рдХрдорд╛рдВрдб рд╣реИред
$ @ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдЗрдорд░) рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ .рдЧрд┐рдд-рдкреНрд░рд╛рдЗрдорд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ, рдкреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ git рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдпрджрд┐ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдмрджрд▓реА рдЧрдИ рд╣реИ, рддреЛ git рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ , рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдорд┐рдЯ рдПрдХ рддреНрд░реБрдЯрд┐ рдФрд░ Makefile рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдо рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЧрд┐рдЯ рд╕реНрдерд┐рддрд┐ рдХрд╣рддреЗ рд╣реИрдВ - рдЪреАрдиреА рдорд┐рдЯреНрдЯреА рдХреЗ рдмрд░рддрди , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЧрд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЙрддреНрдкрд╛рджрди рд▓рд╛рдЗрди рдХреА рд▓рдВрдмрд╛рдИ - рдЪреАрдиреА рдорд┐рдЯреНрдЯреА рдХреЗ рдмрд░рддрди рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо ( рдпрд╣рд╛рдВ рд╕реЗ ) рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


Makefile рдореЗрдВ get-data, mgit рдФрд░ init-git рдбрд┐рдмреНрдмрд╛рдмрдВрдж рд░реЗрд╕рд┐рдкреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, mgit рдПрдХ git рдХреЙрд▓ рд╣реИ рдЬреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ:


 define mgit = git --git-dir=../.git-$@ --work-tree=. endef 

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


рдкреВрд░рд╛ рдореЗрдХрдлрд╛рдЗрд▓ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


 SITES := primer example SERVERHOST := example # .  punicode SERVERHOSTNAME := xn--e1afmkfd.xn--p1ai SERVERPATH := ~/archive all : $(SITES) .PHONY : $(SITES) # target-specific variables primer : DOMAIN := . primer : EXCLUDEDIRS := ,static example : DOMAIN := example.com ifeq ($(SERVERHOSTNAME),$(shell hostname)) # Server define mgit = git --git-dir=../.git-$@ --work-tree=. endef define init-git = mkdir -p $@ && \ $(get-data) && \ git init --bare ../.git-$@ && \ $(mgit) add . && \ $(mgit) commit -m "Initial commit of $@." endef define get-data = cd $@ && \ wget -r -nH -X $(EXCLUDEDIRS) --restrict-file-names=nocontrol $(DOMAIN) endef else # Workstation define init-git = git clone $(SERVERHOST):$(SERVERPATH)/.git-$@ $@ endef endif $(SITES) : ifeq ($(SERVERHOSTNAME),$(shell hostname)) # Server if [[ -d .git-$@ ]]; \ then \ $(get-data); \ $(mgit) add . && \ if [[ -n "`$(mgit) status --porcelain`" ]]; then \ $(mgit) commit -m "Update $@."; \ fi \ else \ $(init-git); \ fi else # Workstation if [[ -d $@/.git ]]; \ then \ cd $@ && git pull; \ else \ $(init-git); \ fi endif 

рдЪреМрдереЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдорд╛рди рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдУрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рддреИрдпрд╛рд░ рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднреА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдиреБрд╕реНрдЦрд╛ рд╕рд╣реА рд╕рд╛рдЗрдЯ рдирд╛рдо рдФрд░ рдЙрд╕рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЧреИрд░-рд╕рдВрдЧреНрд░рд╣реАрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ EXCLUDEDIRS рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рдЖрдк рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХрдВрдкреНрдпреВрдЯрд░ ( SERVERHOST ) рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рд╛рдЗрдЯ рд╕рдВрдЧреНрд░рд╣ ( SERVERPATH ) рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рднреА рд╕рд╛рдЗрдЯ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред
рдЪреВрдВрдХрд┐ рдиреБрд╕реНрдЦрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ (рддреИрдпрд╛рд░ рдПрдХ рд╕рд╣рд┐рдд) рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рддрд╛рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд░рд╣реЗ, рд╣рдо "рдФрд░" && рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рд╕реЗ рдмрдЪ рдЬрд╛рддреЗ рд╣реИрдВред


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


рд╕реНрдерд╛рдиреАрдп рдФрд░ рд╕рд░реНрд╡рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░

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


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


 alias mgit="git --work-tree=. --git-dir=../.git-${PWD##*/}" 

рдЪрд░ $ {PWD ## * /} рдЗрд╕рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрде рдХреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рд╣реИ рдФрд░ POSIX рдорд╛рдирдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА POSIX- рд╕рдХреНрд╖рдо рдЧреЛрд▓реЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


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


рд╕рд░реНрд╡рд░

рдореЗрдХ рд░рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд░реНрдХрд╛рдЗрд╡ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:


 $ ls -a . .. .git-example .git-primer Makefile example primer $ ls -a primer . .. index.html - - $ # ,     .    ./-  ./- 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:


 server { server_name xn--e1afmkfd.xn--p1ai; charset utf-8; location = / { root /home/user/archive/primer; try_files /index.html =404; } location / { root /home/user/archive/primer; default_type "text/html"; try_files $uri =404; } location = /index.html { return 404; } } 

рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди рд╕рд╛рдЗрдЯ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП редrfред рдЗрд╕реЗ index.html рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ wget рджреНрд╡рд╛рд░рд╛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ 404 рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИред


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


рдЕрдВрдд рдореЗрдВ, рд╕рд╛рдордЧреНрд░реА рдХреЗ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ example.rf / index.html (404) рд▓рд┐рдВрдХ рддрдХ рдкрд╣реБрдВрдЪ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╣рд╛рдБ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ ред


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


рд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рдмреИрдХрдЕрдк рдорд╛рдирдХ рдЙрдкрдХрд░рдг wget , git , make рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдореАрдбрд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рдареАрдХ рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, .itignore рдХреЗ рд╕рд╛рде, рдЖрдк рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ рдкреЗрдЬ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВред Makefile рдЖрдкрдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдФрд░ рдКрдкрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг Makefile рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд▓рдЧрднрдЧ 60 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред


рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдорд╛рдирдХ рддрдВрддреНрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЗрд╕рдХреЗ рд▓рд┐рдП CMS рдпрд╛ CMF рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдХрдо рд╣реА рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХрд╛рдо рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╕реНрдерд┐рд░ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдкреВрд░реНрдг рд╕реНрд╡рдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


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


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


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

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


All Articles