Системы управления версиями в Linux
Репозитарий CVS для группы
Если каждой из нескольких рабочих групп необходим собственный репозитарий CVS, то возможны два решения:
- разместить подкаталоги для проектов в едином корневом репозитарии CVS, что упростит архивацию;
- создать отдельный репозитарий для каждого проекта, что упростит настройку разрешений.
Последовательность команд для создания подкаталогов, а также задания разрешения владельца и группы для отдельных репозитариев подробно изложена в статье Создание общего репозитария CVS.
Создание общего репозитария CVS
Для создания репозитария CVS, совместно используемого группой пользователей, вначале создается владелец и группа, которым будет принадлежать репозитарий:
root@localhost:~:# groupadd cvsusers root@localhost:~:# useradd -g cvsusers -u 103 cvs
Затем создается репозитарий:
root@localhost:~:# mkdir /cvsroot root@localhost:~:# chown -R cvs /cvsroot root@localhost:~:# chown -R 770 /cvsroot root@localhost:~:# cvs -d /cvsroot init root@localhost:~:# chgrp cvsusers /cvsroot root@localhost:~:# chmod g+s /cvsroot
Удаление файла из репозитария CVS
Для того, чтобы удалить какой-либо файл из репозитария CVS, необходимо удалить этот файл из песочницы:
oleg@localhost:~/sandbox/linuxcookbook:$ \ > rm content/manpagesprint.html rm: удалить обычный файл `content/manpagesprint.html`? y
Затем следует выполнить команду remove:
oleg@localhost:~/sandbox/linuxcookbook:$ \ > cvs remove content/manpagesprint.html cvs remove: scheduling `content/manpagesprint.html` for removal cvs remove: use `cvs commit` to remove this file permanently
Помещение файла в репозитарий CVS
Для помещения нового файла в репозитарий CVS команды выполняются из рабочего каталога — песочницы. Там же должен располагаться и новый файл.
В начале работы следует прежде всего обновить локальные копии командой update, которая синхронизирует изменения по направлению из репозитария в песочницу:
oleg@localhost:~/sandbox/linuxcookbook:$ cvs update cvs update: Updating . cvs update: Updating content ? content/maninfopagesprint.html
Создание личного репозитария CVS
CVS (Concurrent Versions System), присутствующая практически во всех дистрибутивах Linux, легко масштабируется от хранения персональных данных до больших проектов. CVS в отличие от RCS включает поддержку сложной структуры каталогов и возможность одновременного извлечения группы файлов и целых каталогов.
Сохранение системных файлов в RCS
Для сохранения всех версий системных конфигурационных файлов нет необходимости копировать все содержимое каталога /etc в репозитарий RCS. Достаточно заархивировать каталог /etc обычным способом, а репозитарий RCS использовать для хранения изменяемых файлов.
В следующем примере создается репозитарий RCS для каталога /etc:
root@localhost:~:# mkdir -p /rcsconfig/etc/RCS
Сравнение версий файла в RCS
Если внесения каких-либо изменений в файл вызвали ошибку, то всегда можно сравнить новую версию со старыми, воспользовавшись командой rcsdiff, которая сравнивает две версии файла:
oleg@localhost:~/webprojects/linuxcookbook/content:$ \ > rcsdiff -r1.1 -r1.2 versioncontrolsystems.html =================================================================== RCS file: RCS/versioncontrolsystems.html,v retrieving revision 1.1 retrieving revision 1.2 diff -r1.1 -r1.2 12c12
Выборка старых версий файлов в RCS
В репозитарии RCS хранится несколько версий файла. Для просмотра всего протокола изменений по конкретному файлу следует использовать команду rlog:
oleg@localhost:~/webprojects/linuxcookbook/content:$ \ > rlog versioncontrolsystems.html,v RCS file: RCS/versioncontrolsystems.html,v Working file: versioncontrolsystems.html head: 1.2 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: RCS and CVS ---------------------------- revision 1.2 date: 2008/11/01 11:42:45; author: oleg; state: Exp; lines: +1 -1 Незначительная правка ---------------------------- revision 1.1 date: 2008/11/01 11:30:02; author: oleg; state: Exp;
Создание репозитария RCS
Для создания простого локального репозитария с целью отслеживания изменений в любых текстовых документах идеально подходит простая в настройке и использовании программа управления версиями RCS (Revision Control System).
В системе управления версиями RCS используются два каталога: в рабочем каталоге хранятся рабочие копии документов, а каталог RCS выполняет функции репозитария. Файлы репозитария, хранящие информацию о различных версиях, снабжаются суффиксом .v.
Зачем управлять версиями
Системы управления версиями позволяют эффективно отслеживать изменения и хранить полную историю проекта. Они полезны при работе с любыми текстовыми документами: исходными текстами программ, конфигурационными файлами, сценариями, статьями, книгами. Система управления версиями позволяет легко вернуться к любой версии определенного проекта.