Журнал LinuxFormat - перейти на главную

LXF91:Системы управления версиями

Материал из Linuxformat
Версия от 15:44, 30 марта 2008; -=JeN=- (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Системы управления версиями

Git или Bazaar, CVS или Subversion: что лучше для вашего проекта? Выясняет Грэм Моррисон.

Нет сомнения: без систем управления версиями Linux никогда не достиг бы такого расцвета. Управление версиями связывает тысячи разработчиков, собирая сделанное ими и предоставляя результаты остальным. Оно похоже на клей, удерживающий проект в целости и равновесии.


Все системы управления версиями используют один и тот же основной принцип. Они регистрируют изменения в программном коде – или, в правильной терминологии, отслеживают версии. Каждое изменение (обычно представляющее собой добавление нового файла или модификацию существующего) порождает новую версию. Другой важный аспект систем управления версиями – совместная работа. Они должны позволять разработчикам трудиться вместе и держать каждого из них в курсе изменений, сделанных товарищами.

Существуют два способа решения этой задачи. В более простом случае для размещения всех файлов проекта используется отдельный сервер. Затем каждый разработчик создает личную копию дерева исходного кода и локально применяет к ней свои изменения, а потом синхронизирует их с данными на сер- вере. Так работают CVS и Subversion, наиболее популярные системы управления версиями.

Путь Торвальдса

Другой подход к совместной работе скорее похож на передачу файлов в пиринговых (peer-to-peer) сетях, чем на разработку приложений. Вместо использования центрального сервера, хранящего все данные проекта, каждый разработчик отвечает за синхронизацию своей рабочей копии проекта с остальными разработчиками. Проект становится децентрализованным. Этот подход, судя по всему, является модной тенденцией, если принять во внимание Git Торвальдса и ряд других систем, успешно применяющих децентрализованное управление версиями.

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

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

RCS

Старейшая система в нашем Сравнении.

Исходная система управления пересмотрами версий (Revision Control System; да-да – RCS и вправду дей- ствует согласно этикетке), может, и вытесняется CVS, но остается популярным выбором в некоторых особых случаях, и есть две главных причины предпочесть RCS более продвинутым решениям. Во-первых, эта система сравнительно проста в использовании и помогает овладеть основными навыками, необходимы- ми для работы в других системах управления пересмотрами версий. Во-вторых, RCS удобна для резервного копирования файлов конфигурации и для ведения небольшой истории откатов (undo/redo). Если вам не понравятся сделанные изменения, очень легко вернуться к более ранней версии.

RCS возвращает нас во времена младенчества совместной разработки ПО, и как таковая предлагает скудный набор функций посравнению с более современными конкурентами. Крупнейший недостаток заключается в том, что RCS умеет работать только с отдельным файлом. Вашей первой мыслью станет: «Ну и что с нее толку?». И верно, из-за своих ограничений RCS – плохой выбор для управления проектом, но случается, что и с отдельным файлом надо поработать, и узконаправленный подход RCS будет более оправдан.

Другое ограничение – в одно и то же время с файлом может работать лишь один разработчик. Один файл, один активный редактор: это не делает RCS самой гибкой системой в мире. Если ваши требования к редактированию отдельного файла выходят за пределы элементарного сотрудничества, ищите дальше.

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


CVS

Второе открытие RCS для тысяч хакеров.

Именно с CVS все становится серьезным. Она была разработана для решения основной проблемы RCS: ограниченности работой с отдельным файлом. Дик Груне [Dick Grune], первоначальный разработчик CVS, нуждался в инструменте для совместной работы над проектом компилятора C с двумя своими студентами, поскольку расписания всех троих резко отличались.

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

CVS также решает проблему множества пользователей за счет использования клиент-серверной модели. Наличие разработчиков, параллельно работающих над одними и теми же файлами (отсюда и полное имя системы – Concurrent Version System, система управления параллельными версиями) означает, что для обработки изменений CVS нуждается в сервере. Она блокирует файлы, которые изменяются, или предоставляет простой доступ только на чтение. Сервер CVS также способен управлять более чем одним проектом (они хранятся в виде «модулей»). Хотя команды обработки файлов во многом похожи (checkout, update, commit), их теперь нужно исполнять из оболочки CVS, а не из командной строки, как это было в RCS.

Также усложнился запуск или подключение к серверу, но это не слишком обременительно для среднего программиста. CVS по-прежнему хороший выбор, и, подобно RCS, устанавливается по умолчанию с большинством операционных систем Linux, получая при этом преимущества повсеместной поддержки. Многие инструменты и приложения Linux все еще собираются с использованием CVS – это по-прежнему самая популярная система управления версиями – и практически для каждой крупной ОС существует масса графических клиентов на выбор.

Персональные инструменты
купить
подписаться
Яндекс.Метрика