Про системы контроля версий

Александр Бельченко
6 ноября 2003

Системы контроля версий задумывались как инструмент для облегчения совместной работы большой группы программистов над программным продуктом. Главная идея — это хранение всех версий исходных кодов в единой базе данных. Каждый конкретный разработчик может изменять файлы, над которыми он работает на своем компьютере и потом помещать их в общую базу данных. При этом всегда имеется возможность получить самые свежие версии исходных файлов, над которыми работают другие программисты для тестирования всего приложения.

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

Имеет ли смысл использовать контроль версий в маленьком коллективе? или даже одиночному программисту? Смею утверждать — да, имеет смысл использовать. Хранение в базе данных последовательности версий программы позволяет легко вернуться назад, когда на определенном этапе программист решает, что выбранный алгоритм неверен.

Так, часто на начальных этапах разработки приходится пробовать различные варианты реализации некоторых алгоритмов. Причем эти варианты могут различаться очень сильно. Рано или поздно наступает момент, когда эксперимент заводит в тупик. Если не сохранять промежуточные варианты таких проб, то восстановить более удачную итерацию иногда становится довольно трудно или утомительно. Иногда затраты сил на такой возврат настолько велики, что проще оставить все как есть. Представьте, что вам понадобилось подобрать наилучший алгоритм, когда большая часть разработки уже завершена, а любые эксперименты влекут за собой переписывание не одного десятка строк кода... Тоска! Вот так и начинают плодиться на диске каталоги с цифрами в конце: «MyProgram», «MyProgram1», «MyProgram2», «MyProgram3» ... Знакомая картина?

Научиться пользоваться системой контроля версий довольно легко. Приучить себя пользоваться такой системой — немного сложнее. Это требует вырабатывания определенного стиля программирования. Но, мне кажется, что хороший стиль программирования сам по себе помогает писать программы быстрее и надежнее. Стильные программы легче отлаживать и сопровождать. Нужны ли еще аргументы за?

Ссылки по теме

TortoiseCVS — великолепная система версий для Windows на базе известной open-source системы CVS. Интегрируется в оболочку Windows, работать с ней очень удобно из обычного «проводника» Windows.