Глава 2. Основные понятия управления версиями

Содержание

Хранилище
Модели версирования
Проблема совместного использования файлов
Модель Блокирование-Изменение-Разблокирование
Модель Копирование-Изменение-Слияние
Что же делает Subversion?
Subversion в действии
Рабочие копии
Адреса URL хранилища
Ревизии
Как рабочие копии отслеживают хранилище
Подводя итоги

Эта глава - слегка изменённая версия такой же главы из книги о Subversion. Онлайн версия книги о Subversion доступна по адресу http://svnbook.red-bean.com/.

Эта глава является кратким неформальным введением в Subversion. Если управление версиями для вас в новинку, эта глава определённо для вас. Мы начнём с обсуждения основных понятий управления версиями, перейдём к идеям, лежащим в основе Subversion, и покажем несколько простых примеров использования Subversion.

Несмотря на то, что примеры из этой главы описывают совместную работу над исходным кодом программ, помните, что Subversion подходит для любых типов файлов, и не является специализированным инструментом программистов.

Хранилище

Subversion - это централизованная система для совместной работы. В её основе лежит хранилище, которое содержит данные в форме дерева файловой системы - обычной иерархии файлов и папок. Клиенты подключаются к хранилищу, и читают или изменяют эти файлы. Записывая данные, клиент делает информацию доступной для остальных; читая данные, клиент получает информацию от других.

Рисунок 2.1. Типичная система Клиент/Сервер

Типичная система Клиент/Сервер

Но чем эта система отличается от обычного файлового сервера? И действительно, хранилище является разновидностью файлового сервера, однако не совсем обычного. Что делает хранилище Subversion особенным - это то, что он запоминает каждое внесённое изменение, когда-либо записанное в него: любое изменение любого файла, и даже изменения в самом дереве каталогов, такие как добавление, удаление и перемещение файлов и каталогов.

Когда клиент просто читает данные из хранилища, он получает последнюю версию дерева файловой системы. Но, помимо этого, клиент имеет возможность посмотреть предыдущие состояния файловой системы. Например, клиенту интересно, «Что содержал эта папка в прошлый вторник? » или «Кто последним изменил этот файл и какие изменения внес? » Вопросы подобного типа являются основными для любой системы управления версиями: системы, разработанной для записи и отслеживания изменений данных во времени.