Популярные ответы
Похожие ответы
Система управления версиями (Version Control System) — программное обеспечение, предназначенное для организации работы с изменяющейся информацией.
Чаще всего системы управления версиями используются при создании программных проектов, но реально их сфера применения гораздо шире. Они могут выступать в роли инструмента для работы с любыми данными, т.к. обеспечивают хранение разных версий файлов, а также позволяют выполнять различные операции с ними.
Среди базовых функциональных возможностей, предоставляемых различными системами управления версиями, можно отметить следующие:
- Хранение версий файлов. Большинство систем управления версиями обеспечивает хранение данных в центральном репозитории (хранилище). Обязанности управления репозиторием обычно возлагается на системных администраторов. Поскольку в этом случае настройки репозитория и создание резервных копий производится квалифицированными специалистами, надежность хранения данных повышается.
- Фиксация изменений состояния файла. Команда фиксации изменений (commit) передает изменения, сделанные разработчиком, в репозиторий и помечает новое состояние файла как очередную его версию.
- Восстановление любой версии файла. Эту возможность, наверное, стоит признать самой главной. Разработчик может как угодно изменять содержимое файла; при условии своевременной фиксации версий и, конечно же, при надлежащем администрировании репозитория, файл можно без труда вернуть к любому из зафиксированных ранее состояний. Другими словами, ни одна из предыдущих версий пропасть не может.
- Создание ветвей в составе проекта. В ряде случаев возникает необходимость, начиная с некоторой версии файла, вносить две независимых друг от друга последовательности изменений. Сделать это позволяет механизм ветвления. Пользователь имеет возможность на каком-то этапе работы с файлом, создать новую ветвь, после чего изменения в основной и вновь созданной ветви могут вноситься независимо друг от друга. Как правило, новая ветвь создается не для одного файла, а для проекта — в данном случае поддерева каталогов с файлами.
- Интеграция (слияние) данных из разных ветвей проекта. На каком-то этапе работы с разными ветвями проекта можно выполнить слияние данных в файле — объединение изменений, независимо внесенных различными разработчиками в различных ветвях.
- Блокировка. Один из разработчиков имеет возможность захватить в монопольное использование файл или группу файлов для внесения в них изменений.
- Разрешение конфликтов. Возможна ситуация, когда два разработчика вносят изменения в один и тот же файл. Тот из них, кто первый зафиксирует изменения (выполнит команду commit), сможет сделать это без проблем. Тот, разработчик, который зафиксирует изменения вторым, получит сообщение о конфликте, в данном случае о том, что его изменения выполнены не на базе последней, а на базе предпоследней версии файла. В такой ситуации необходимо объединить результаты работы двух разработчиков. Конфликт также может возникнуть и при интеграции содержимого файлов из разных ветвей проекта. Независимо от причины конфликтов, системы управления версиями предоставляют средства автоматического их разрешения. Однако, следует заметить, что данные средства как правило, малоэффективны и разрешать конфликты в большинстве случаев приходится вручную, а роль автоматических средств сводится к представлению конфликтующих фрагментов кода в удобном для разработчика виде.
Базовые функциональные возможности в различных системах управления версиями реализованы по-разному. Кроме того, разные системы предоставляют дополнительные возможности для работы с версиями. Более подробную информацию можно получить из руководства по конкретному продукту.
Несколько примеров из большого списка продуктов — систем управления версиями: Concurrent Versions System (CVS), Subversion (SVN), Razor, BitKeeper, Git.
Источники: