Управление версиями программного обеспечения

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

Система контроля версий (VCS) обычно записывает, кто, когда и как изменил, какие строки исходного кода программы. Это позволяет просматривать точное состояние наблюдаемых файлов в любое время в прошлом и может вернуться к более старой версии файлов, если изменения вызвали нежелательное поведение . Каждому изменению, внесенному в конкретный файл, присваивается уникальный номер, обычно называемый номером ревизии .

Не менее важным элементом управления версиями является способность большого числа программистов работать вместе над одним программным проектом, поскольку программы управления версиями отслеживают и помогают разрешать потенциальные конфликты (ситуации, когда одни и те же части исходного кода меняют два или более программистов одновременно). Это часто случается при разработке программ с открытым исходным кодом , в которых могут участвовать десятки или сотни программистов со всего мира, которые не находятся в прямом контакте. Сегодня невозможно представить любой крупный проект без управления версиями.

Наиболее известными представителями систем управления версиями являются CVS и Apache Subversion , как в свободном доступе, так и с открытым исходным кодом . Обе системы централизованы - они хранят данные на одном сервере, и для большинства видов использования системы (сохранение изменений, проверка изменений, возврат к предыдущей версии) требуется связь с сервером. Все чаще используются распределенные системы контроля версий, в которых каждый разработчик может иметь копию всей истории локально, что позволяет ускорить работу.

Системы управления версиями обычно не сохраняют полное состояние каждой ревизии, а только различия между отдельными ревизиями (с использованием инструментов сравнения ). Обычно это экономит место, но недостатком является замедление доступа.