Управление версиями
Об управлении версиями
Image credit: Unsplash
Управление версиями
Системы контроля версий (VCS) используются, когда над одним проектом работают несколько человек. Обычно основное дерево проекта хранится в локальном или удаленном репозитории, доступ к которому настроен для участников проекта. При внесении изменений в содержимое проекта система контроля версий позволяет исправлять их, объединять изменения, внесенные разными участниками проекта, при необходимости выполнять откат к любой более ранней версии проекта. В классических системах контроля версий используется централизованная модель, предполагая наличие единого хранилища для хранения файлов. Большинство функций контроля версий выполняются специальным сервером.
Участник проекта (пользователь) получает нужную ему версию файлов перед началом работы с помощью определенных команд. После внесения изменений пользователь помещает новую версию в репозиторий. В то же время предыдущие версии не удаляются из центрального хранилища, и вы можете вернуться к ним в любое время. Сервер может не сохранять полную версию измененных файлов, а выполнять так называемое дельта—сжатие - сохранять только изменения между последовательными версиями, которые уменьшает объем хранимых данных.
Системы контроля версий поддерживают возможность отслеживания и разрешения конфликтов, которые могут возникнуть, когда несколько человек работают над одним файлом. Вы можете объединить (объединить) изменения, внесенные разными участниками (автоматически или вручную), вручную выбрать нужную версию, полностью отменить изменения или заблокировать файлы для изменения. В зависимости от настроек, блокировка не позволяет другим пользователям получить рабочую копию или запрещает изменять рабочую копию файла с помощью файловой системы ОС, предоставляя таким образом привилегированный доступ только одному пользователю, работающему с файлом. Системы контроля версий также могут предоставлять дополнительные, более гибкие функциональные возможности. Например, они могут поддерживать работу с несколькими версиями одного файла, сохраняя общую историю изменений вплоть до разветвления версий и свои собственные истории изменений каждой ветви. Кроме того, обычно доступна информация о том, кто из участников, когда и какие изменения были внесены. Обычно такого рода информация хранится в журнале изменений, доступ к которому может быть ограничен. В отличие от классических, в распределенных системах управления версиями центральное хранилище не является обязательным. Среди классических венчурных капиталистов наиболее известными являются CVS, Subversion, а среди распределенных — Git, Bazaar, Mercurial. Принципы их работы схожи, отличаются они в основном синтаксисом команд, используемых в работе.