Структура репозиториев
Описание
1. Основным хранилищем является репозиторий
Storage. Он создан первым и является прямым или опосредованным источником для всех остальных репозиториев. В репозитории Storage разработка не ведется.
2. Репозиторий
Web Site является клоном репозитория Storage. В репозитории Web Site разработка не ведется, по этому данный репозиторий исключительно забирает данные. Web Site - это ребозиторий, видимый из сети, данные на нем расположенные доступны по сетевым протоколам.
3. Репозиторий
Intermediate так же является клоном репозитория Storage. Вся обновленная информация поступает именно в репозиторий Intermediate, а далее - в соответствии с назначением. В связи с тем, что в репозиториях Storage и Web Site разработка не ведется, репозиторий Intermediate исключительно передает данные им, ничего не принимая от них. В данном репозитории разработка не ведется.
4. Репозиторий
Development является клоном репозитория Intermediate. В данном репозитории разработка так же не ведется. Данный репозиторий предназначен для контроля разработки, этот репозиторий доступен по сети как сабдомен репозитория Web Site. В процессе разработки данные из репозиториев разработчиков поступают в репозиторий Intermediate, откуда их забирает репозиторий Development для организации визуального ознакомления с процессом разработки.
5. Репозитории Разработчикой (список
Developers - количество неограничено) - это отдельные каталоги, содержащие клоны репозитория Intemediate. В процессе разработки каждый разработчик имеет доступ только к собственному репозиторию. Вносимые изменения он лично способен контролировать через сеть в собственном репозитории (репозитории разработчиков доступны через сеть так же как репозиторий Development - в качестве сабдоменов репозитория Web Site). После внесения изменений разработчик передает данные своего репозитория в репозиторий Intermediate, откуда их сразу же забирает репозиторий Development. В то же время разработчик может из репозитория Intermediate забирать в свой репозиторий данные, залитые другими разработчиками. Собственные изменения разработчики способны контролировать каждый в своем репозитории. Общие изменения в репозитории Development.
Общий план последовательности работ
1. Разработчик подключается к проекту, для этого администрация создает для него личный репозиторий (например
January), который является клоном репозитория Intermediate.
2. В этом репозитории разработчик пишет код, верстает страницы, добавляет или удаляет файлы и все вносимые собой изменения контролирует по адресу (например)
хттп://january.team.web_site.ru ...
3. После завершения очередной части проекта разработчик заливает изменения на репозиторий Intermediate, откуда данные изменения могут слить себе другие разработчики в собственные репозитории, и откуда эти изменения попадают в репозиторий Development. Таким образом репозиторий Intermediate является собирателем всех изменений от всех разработчиков, а так же с него изменения от всех разработчиков принимает репозиторий Development, состояние которого можно проверять по сети, таким образом наблюдая за общим ходом работ. Адрес репозитория Development может быть например таким:
хттп://development.web_site.ru ...
4. В том случае если на репозитории Development все в порядке (а соответственно и на репозитории Intermediate), с репозитория Intermediate данные отправляются в "хранилище" - репозиторий Storage для контроля и хранения версий. Даже при желании ни один из разработчиков не способен повредить содержание репозитория Storage, так как не имеет с ним прямой связи.
5. Информация из репозитория Storega после оценки и одобрения попадает в репозиторий Web Site - то есть становится доступной на доменах сайта.
К данной схеме я пришел, как к наиболее адекватной при разработке в составе команды в случае если большинство участников являются по ситу фри-лансерами.
Условные обозначения (стрелки)
Pull - направление получения данных, то есть Web Site < Storage означает что репозиторий Web Site принимает данные от репозитория Storage и не может ему передавать собственные. Иными словами - репозиторий Web Site может самостоятельно получить данные от репозитория Storage (независимо от желаний Storage).
Push - направление передачи данных. Иными словами репозиторий разработчика может самостоятельно передать данные на репозиторий Intermediate (независимо от желаний Intermediate).
Обе стрелки означают, что репозиторий может как принять данные самостоятельно, так и самостоятельно их передать...
Пример:
Из выше описанного и нарисованной схемы следует, что репозиторий Storage самостоятельно данные передать никому не может. Ему же может передать данные репозиторий Intermediate. От него же может закачать себе данные репозиторий Web Site.
-- -- -- -- -- -- --
Как не трудно догадаться в качестве системы контроля версий я выбрал
git...
-- -- -- -- -- -- --
P.S. Каждый разработчик в рамках своего репозитория бранчуется ровно так, как его душе угодно...