Создание личного репозитария CVS

CVS (Concurrent Versions System), присутствующая практически во всех дистрибутивах Linux, легко масштабируется от хранения персональных данных до больших проектов. CVS в отличие от RCS включает поддержку сложной структуры каталогов и возможность одновременного извлечения группы файлов и целых каталогов.

Для создания личного репозитария создается корневой каталог репозитария (имя и место расположения корневого каталога CVS выбирается произвольно):

oleg@localhost:~:$ mkdir ~/cvsroot

Устанавливаются права, позволяющие пользоваться репозитарием лишь его владельцу:

oleg@localhost:~:$ chmod -R 700 ~/cvsroot

Командой init создается и инициализируется репозитарий:

oleg@localhost:~:$ cvs -d ~/cvsroot init

Далее выполняется переход в каталог с файлами, которые будут храниться в репозитарии:

oleg@localhost:~:$ cd ~/webprojects/linuxcookbook/

Затем каталог (дерево каталогов) импортируется в репозитарий:

oleg@localhost:~/webprojects/linuxcookbook:$ \
> cvs -d ~/cvsroot import linuxcookbook mensh version1

Аргументы mensh (метка поставщика) и version1 (номер версии) необходимы для нормальной работы CVS.

Запускается текстовый редактор по умолчанию со следующим текстом:

CVS: Enter log. Lines beginning with `CVS:` are removed automatically
CVS:
CVS:----------------------------------------------------------------------

Вводимое описание проекта должно быть внятым и подробным, чтобы через какое-то время не пришлось гадать, о чем идет речь.

После введения описания проекта, сохранения и закрытия происходит импорт:

cvs import: Importing /home/oleg/cvsroot/linuxcookbook/content
N linuxcookbook/content/passwordfilesintegrity.html
N linuxcookbook/content/cvslocalrepositorycreating.html
N linuxcookbook/content/groupadd.html
N linuxcookbook/content/cupsservinglinuxclients.html
N linuxcookbook/content/sudo.html
N linuxcookbook/content/cddvdrecordintro.html
...
 
No conflicts created by this import

Теперь за пределами корневого каталога репозитария CVS создается рабочий каталог, в который будут извлекаться файлы для редактирования (из репозитария можно извлекать отдельные файлы, группы файлов и целые каталоги):

oleg@localhost:~:$ mkdir ~/sandbox

Выполняется переход в созданный рабочий каталог:

oleg@localhost:~:$ cd ~/sandbox
oleg@localhost:~/sandbox:$

Из репозитария извлекается необходимый каталог с подкаталогами и всеми файлами в рабочий каталог:

oleg@localhost:~/sandbox:$ cvs -d ~/cvsroot checkout linuxcookbook
cvs checkout: Updating linuxcookbook
cvs checkout: Updating linuxcookbook/content
U linuxcookbook/content/adduser.html
U linuxcookbook/content/cdbootdiskcreating.html
U linuxcookbook/content/cdcopy.html
U linuxcookbook/content/cddvdrecordintro.html
U linuxcookbook/content/cdfiletreecreating.html
U linuxcookbook/content/cdrecordaudio.html
U linuxcookbook/content/cdrecordblank.html
U linuxcookbook/content/cdrecordmultisession.html
U linuxcookbook/content/cdrecordportable.html
U linuxcookbook/content/cdrecordscanbus.html
U linuxcookbook/content/cdrecordsplit.html
U linuxcookbook/content/cups.html
...

При извлечении файлов из репозитария CVS в каталоге ~/sandbox/linuxcookbook — „песочнице“ — создается каталог для работы с файлами и каталог CVS с набором административных файлов CVS:

oleg@localhost:~/sandbox/linuxcookbook:$ ls -l
drwxr-xr-x 2 oleg users 4096 2008-11-05 16:21 CVS/
drwxr-xr-x 3 oleg users 4096 2008-11-05 16:31 content/

Файл после редактирования сохраняется и возвращается в репозитарий CVS командой commit:

oleg@localhost:~/sandbox/linuxcookbook:$ cd content
oleg@localhost:~/sandbox/linuxcookbook/content:$ vim adduser.html
oleg@localhost:~/sandbox/linuxcookbook/content:$ cvs commit

Снова запускается текстовый редактор по умолчанию со следующим текстом:

CVS: Enter log. Lines beginning with `CVS:` are removed automatically
CVS:
CVS: Comitting in .
CVS:
CVS: Modified files:
CVS:    adduser.html
CVS:----------------------------------------------------------------------

После занесения в журнал описания изменений и закрытия редактора происходит занесение отредактированного файла в репозитарий:

cvs commit: Examining .
Checking in adduser.html;
/home/oleg/cvsroot/linuxcookbook/content/adduser.html,v  <--  adduser.html
new revision: 1.2; previous revision: 1.1
done

Каждый проект — один каталог со всеми файлами и подкаталогами — должен храниться в отдельном каталоге, даже если он состоит из одного файла.

Powered by Drupal — Design by drupal.mensh.ru.