Давайте для начала разберемся, что же такое контроль версий? Системой контроля версий является программный продукт, который запоминает все ваши модификации данных и, при необходимости, позволяет выполнить откат. А также дополнительной функцией является возможность определить, кто внес различные изменения в документ.
Конечно, все знакомы с этой проблемой при работе с проектом, когда возникает возможность добавить изменения, но для этого необходимо создать огромное количество папок с разными метками. Через некоторое время количество папок становится большим, особенно плохо следить за документами, если над ними трудится целая команда.
Для того, чтобы устранить таковые трудности, большинство программистов стали использовать систему контроля версий, с помощью нее удобно следить за проектом как командно, так и индивидуально. С представленной системой программист способен отслеживать различные модификации документов, добавлять и объединять ветви проектов, а также выполнять сброс документа до определенных моментов. Репозиторий считается главным определением VCS - это специальное выделенное хранилище, на котором хранится информация о файлах, также с помощью хранилища возможно наблюдать за модификацией данных.
Основные группы
На сегодняшний день существует две группы VCS: распределенные и централизованные. Давайте перейдем к более подробному описанию каждой группы ниже.
Централизованные
Представленные системы являются клиент-серверным программным обеспечением, что означает, что данные проекта находятся в единственном образце на сервере. Пользователи имеют доступ к файлам через специальный программный продукт, например, вы можете выбрать CVS, Subversion.
CVS (система одновременных версий) - одна из первых систем, которая приобрела большую популярность среди многих разработчиков. Сегодня представленный программный продукт более не развивается, поскольку имеет несколько важных недостатков: невозможно изменить имя файла, плохое хранение данных, отсутствует контроль целостности.
Subversion (SVN) - эта система контроля версий заменила описанный выше CVS в 2004 году и по сегодняшний день активно используется разработчиками. Несмотря на большое количество преимуществ CVS, у SVN есть некоторые недостатки: невозможно удалить данные из репозитория, проблемы с изменением имени, трудности в слиянии ветвей.
Распределенные системы контроля версий
С помощью этих систем контроля версий каждый разработчик может сохранить копию проекта. У них также есть общее центральное хранилище, которое уже содержит изменения, отправленные из сохраненных копий разработчиков, и они уже синхронизируется. Когда пользователи работают с распределенными системами контроля версий, они обычно синхронизируют свою копию с центральным репозиторием и вносят любые изменения в свой локальный репозиторий.
Есть несколько преимуществ таких систем:
- Автономность программиста при работе над проектами.
- Повышенная надежность.
- Гибкость всей системы.
Все эти преимущества получены благодаря локальной копии центрального хранилища. Мы можем выделить наиболее известные DVCS - это Git и Mercurial.
Mercurial >представляет собой свободную систему, в которой не существует центральное хранилище. Ради комфортного использованию существует специальное консольное программное обеспечение под названием Hg. Представленные VCS обладает всеми основными функциями: объединение, ветвление, синхронизация. Данная система выполнена на языке программирования питон, за счет чего имеет возможность использоваться на всех современных ОС.
Git - представляет собой распределенную систему контроля версий, предназначенная для использования на ОС Linux. Мы также можем выделить несколько популярных компаний, которые используют VCS Git - Qt, Линукс, Андроид. VCS по своему стандартному функционалу довольно похож на Mercurial, который описанный выше, но имеет ряд преимуществ (производительность) и довольно популярен среди разработчиков. Git является лидером системы контроля версий.