
рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!
Git рдореЗрдВ рд╕рдмрдореЙрдбрд▓реНрд╕ рдпрд╛ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЗ рдЖрдпреЛрдЬрди рдХрд╛ рд╡рд┐рд╖рдп рдкрд╣рд▓реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕реБрд╡рд┐рдзрд╛ рдФрд░ рднреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рд╣реБрдИред рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдЕрдм рдПрдХ Django рдЖрд╡реЗрджрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдЧреНрд░рджреВрдд
рдЬрдм рдЖрдк рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓, рдПрдХреНрд╕рдЯреЗрдВрд╢рди, рдпреВрдЯрд┐рд▓рд┐рдЯреА рдЬрдорд╛ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддреА рд╣реИред рдФрд░ рд╕рд╡рд╛рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рдВрдЧрдарди рдореЗрдВ рдЙрдарддрд╛ рд╣реИред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдПрдХ Django рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВред рдЖрд╡реЗрджрди рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рд╕рд╛рдЗрдЯ рдХреЗ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рднрд╛рдЧ рдореЗрдВ, рд╣рдореЗрдВ рдкреНрд░рдпреЛрдЬреНрдп рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ-рдкреНрд░рд╡реЗрд╢ рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред
рдЯреНрд░реЗрдирд┐рдВрдЧ
Gitosis рдореЗрдВ рдРрдк-рд╕рдорд╛рдЪрд╛рд░ рднрдВрдбрд╛рд░ рдмрдирд╛рдПрдБ:
gitosis-admin / gitosis.conf
[group apps] writable = app-news members = @developers @hosts
рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬреЗрдВ:
git pull
рдЖрд░рдВрдн:
git clone git@git.home.com:app-news
рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреА рд╕рдВрд░рдЪрдирд╛
+-app-news/ +-home/ +-news/ +-locale/ +-static/ +-templates/ +-__init__.py +-models.py +-urls.py +-views.py +-__init__.py +-MANIFEST.in +-setup.py
setup.py
from setuptools import setup, find_packages setup( name='home.news', version='0.1', description='News for Django', author='Elias', namespace_packages=['home'],
рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╣реЛрдо рдиреЗрдорд╕реНрдкреЗрд╕ (рдкреАред 8) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдФрд░ рд╣реЛрдореЛрд╕реИрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдкреГрд╖реНрда 13.14) рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
MANIFEST.in
recursive-include home/*/locale * recursive-include home/*/static * recursive-include home/*/templates *
рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдШрд░ / init .py
import pkg_resources pkg_resources.declare_namespace(__name__)
рдиреЗрдорд╕реНрдкреЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВред
рдорд╛рд╕реНрдЯрд░ рд╕реЗ рджреВрд░рд╕реНрде рд╢рд╛рдЦрд╛ v0.1 рдмрдирд╛рдПрдБ:
git push origin master:v0.1
рд╡рд╣ рд╕рдм рд╣реИ! рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ:
pip install git+ssh://git@git.home.com/app-news@v0.1
рдпрд╛ рд╕рдВрдкрд╛рджрди рдореЛрдб рдореЗрдВ:
pip install -e ./app-news
рдпрд╛ рд╕реЗрдЯрдкреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:
python setup.py develop
рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрдкреНрдЯреБрдкреВрд▓ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдкреИрдХреЗрдЬ рдХрдиреЗрдХреНрд╢рди
рдореИрдВрдиреЗ рд╕реЗрдЯрдЕрдк рд╡рд┐рдзрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдКрдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдлрд╝рд╛рдЗрд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП):
git+ssh://git@git.home.com/app-news@v0.1
рдФрд░ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рд▓рд╛:
pip install -r requirements.txt
рдирд┐рд╖реНрдХрд░реНрд╖
Git рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ (рд╕рдмрдореЛрдбреБрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рдкреНрд░рдХрдЯ рд╣реБрдЖ рдЬрдм рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдФрд░ рдЗрд╕реЗ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕рд╛рде рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдХрдорд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реБрдИ рдЬрдм рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреИрдХреЗрдЬ рдФрд░ рдПрдХ рд▓рд┐рдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдЧреИрд░-рддреБрдЪреНрдЫ рдкреНрд░рд╡рд╛рд╕ред рдФрд░ рдЗрд╕реА рддрд░рд╣ ... рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдкреИрдХреЗрдЬ рдХреЛ рдПрдбрд┐рдЯ рдореЛрдб рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд┐рдирд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рдПрдбрд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, ssh рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреБрд▓ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд╕рднреА рдЖрдХрд░реНрд╖рдг рдмрдиреЗ рд░рд╣реЗред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдереЛрдбрд╝рд╛ рдЦреБрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ :)
рдзрдиреНрдпрд╡рд╛рдж, рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!