Система контроля версий (СКВ) – система, которая записывает изменения в файл/файлы в течение определенного промежутка времени и позволяет возвратиться через время к нужной версии.
Например, веб-дизайнеру бывает необходимо сохранять разные версии макетов. Система позволяет вернуть файлы к исходному виду, проследить сделанные изменения, кто их осуществлял, после чего возникли те или иные проблемы, кто ставил задачи и т.д. Система контроля версий возвращает потерянные файлы, если в процессе работы что-то сломалось или пошло не так.
- Локальные СКВ
Большинство разработчиков в качестве метода контроля версий копируют файлы в отдельную директорию. Пользуется он такой популярностью, благодаря простоте использования, но в данном случае появляется большая вероятность наличия всевозможных ошибок. Ведь директорий создается много, и вы можете по ошибке изменить не тот файл.
Поэтому чтобы избежать такой проблемы, были разработаны локальные системы контроля версий. Простая база данных позволяет хранить информацию о всех изменениях и осуществляет контроль ревизий. Одна из самых известных систем – RCS. Она хранит на диске наборы патчей, т.е различия между файлами. Используя их, система воссоздает состояние любого файла в нужный отрезок времени.
- Централизованные СКВ
Многим разработчикам приходится сотрудничать по одному проекту с другими специалистами. Для этой цени и были разработаны централизованные системы контроля версий. Среди них выделяются системы: CVS, Subversion, Perforce. Они используют один сервер, который хранит все версии файлов. К нему имеют доступ определенное количество клиентов.
Преимуществом данного подхода служит то, что каждый из разработчиков знает, на каком этапе работы находится каждый из них. В ЦСКВ есть администраторы, которые задают каждому свою задачу и осуществляют контроль.
Одним из основных минусов данной системы является единая точка отказа, предоставленная централизованным сервером. Если он на некоторое время вышел из строя, то никто не сможет использовать контроль версий. Сложность заключается и в том, что если жесткий диск, где хранится база данных поврежден, а бэкапы отсутствуют, вся история проетка потеряется. То же касается и локальных СКВ, когда вся история хранится в одном месте, есть риск потерять всю информацию по проекту.
- Распределенные СКВ
Различают несколько РСКВ: Git, Mercurial, Bazaar или Darcs. Здесь можно увидеть не только состояние файлов в определенный момент времени, но и полностью скопировать репозиторий. Данный подход предполагает, что если один из серверов упадет, то другой клиентский репозиторий может быть перенесен на иной сервер и работа продолжиться. Каждая копия репозитория – полный бэкап всех данных.
Преимуществом также служит и то, что многие РСКВ имеют возможность работать сразу с несколькими удаленными репозиториями. Поэтому можно работать с различными группами разработчиков над одним проектом. Здесь можно применять иерархические модели управления, что невозможно в ЦСКВ.