Несколько слов об эволюции Centralized Version Control System
СVCS (Centralized Version Control System) — централизованные системы контроля версий, работа которых основана на том, что на сервере имеется одна центральная копия проекта, а программисты совершают свои изменения в этой центральной копии.
Таким образом, если нам нужно получить какую-нибудь ветку, мы идём на сервер, и он нам отдаёт эту ветку. Схему работы CVCS легко демонстрирует простой рисунок: В современных проектах СVCS практически не используются, так как они устарели и считаются архаизмом. Связано это с недостаточной эффективностью и ограниченными возможностями CVCS. Например, если инженер-разработчик отправлялся в регион, где есть проблемы с интернетом, возникал вопрос: как хранить всю историю изменений в коде?
Кроме невозможности удалённой работы при плохом интернете, нельзя не упомянуть ограниченную сервером производительность и сложности при merge'е наработок разных специалистов. В общем, если на вашем проекте до сих пор применяют CVCS — бегите.
Что пришло на смену CVCS?
В настоящее время при разработке программного обеспечения используют децентрализованные (распределённые) системы контроля версий DVCS (Distributed Version Control System). Они имеют несколько иную структуру и ряд принципиальных отличий. Например, у каждого инженера/разработчика есть свой репозиторий, который полностью копирует центральный, причём центральный сервер выступает в большей степени в качестве хаба для обмена. Наиболее яркий пример — Git.
Что это даёт: — возможность работы локально: программист вносит изменения в код без сетевого взаимодействия, а после возвращения с командировки просто выполняется слияние версий; — автоматическое резервное копирование: так как каждый разработчик имеет свою копию, проект легко восстанавливается в случае непредвиденного падения центрального сервера; — возможность работать быстрее: раз всё происходит офлайн, не нужно ждать ответа сервера, что повышает скорость коммитов, дифов и т. п.
Схема работы DVCS
На этом пока всё. Если хотите подробнее узнать о GIT и методах работы с ним, записывайтесь на курс «DevOps практики и инструменты»!
А какую DVCS используете вы? Пишите в комментариях!