Глава 18 Управление версиями 18.1. Введение

Для чего нужны системы управления версиями? Они позволяют эффективно от слеживать изменения в документах и хранить полную историю проекта. Даже
спустя несколько месяцев вы можете легко вернуться к предыдущей конфигура ции системы, состоянию программного блока или версии рукописи.
Системы управления версиями полезны при работе с разными видами дан ных: исходными текстами программ, двоичными файлами, конфигурационными
файлами, сценариями, статьями и книгами, индексами, складскими базами дан ных — словом, с любыми текстовыми документами. Поскольку система управле ния версиями отслеживает все вносимые изменения, вы можете легко вернуться
к любой точке жизненного цикла определенного проекта. Система управления
версиями выполнит всю работу — она не зависит от добросовестности пользова телей, создающих и сохраняющих копии разных версий документа.
Системы управления версиями помогают организовать совместную работу
групп над общим проектом. Например, проект можно разбить на несколько ветвей,
которые позднее будут объединены. Также возможно объединение нескольких
версий файла, хотя следует помнить, что программа не понимает смысл содержи мого файла и не способна разумно разрешать конфликты — она знает лишь то, что
файлы различаются, поэтому объединение иногда требует человеческого участия.
Существует немало бесплатных программ управления версий. Приведу спи сок самых распространенных:
О RCS (Revision Control System);
О CVS (Concurrent Versions System);
О Subversion;
О GNU Arch;
О Monotone.
Некоторые коммерческие продукты:
О BitKeeper;
О Visual SourceSafe;
О ОрепСМ;
О CMSynergy;
О Perforce;
О ClearCase.
Программы RCS и CVS существуют уже давно и получили самое широкое
распространение. Они просты в настройке и использовании, а их давнее исполь зование обеспечило тестирование в жестких условиях.
Subversion, SNU Arch и Monotone обладают возможностями, отсутствующи ми в CVS: созданием распределенных репозитариев (в отличие от модели CVS
с центральным сервером) и атомарными операциями закрепления изменений. При
атомарном закреплении все изменения происходят одновременно. Изменения,
вносимые пользователем в репозитарий, применяются как единое целое и стано вятся видимыми для других пользователей только после завершения. CVS вно сит изменения на уровне отдельных файлов, поэтому если закрепление будет пре рвано из-за сбоя сети, оно будет внесено только частично.
Несмотря на всю полезность атомарного режима, Subversion, GNU Arch и Monotone
все же нельзя назвать зрелыми продуктами. GNU Arch и Subversion трудны
в установке и настройке и не так легко осваиваются. В Monotone используется дру гая, весьма интересная архитектура — принципиальное отличие заключается в том,
что файлы передаются по внедренному сетевому протоколу netsync вместо HTTP,
NNTP или SMTP. Тем самым ликвидируются многие сложные этапы настройки,
а каждая установка Monotone может выполнять функции как клиента, так и сервера.
Дальновидный администратор может установить некоторые из этих продук тов на тестовых компьютерах, следить за их разработкой и постепенно привыкать
к ним, потому что эти программы будут использоваться для управления версия ми в будущем.
BitKeeper — один из самых популярных коммерческих продуктов. В частно сти, он используется при разработке ядра Linux. Разработчики BitKeeper предла гают как 30-дневную пробную версию, так и усеченную бесплатную версию для
личного использования.
Несмотря на большое количество альтернатив, в этой главе основное внима ние уделяется RCS и CVS, самым зрелым и широко используемым системам уп равления версиями. RCS является прикладной частью (backend) CVS, что упро щает освоение обеих программ. RCS идеально подходит для одного пользователя
с простыми потребностями; CVS хорошо подойдет как для одного пользователя,
так и для группы пользователей, работающих над сложными проектами.