Создание общего репозитория CVS

Опубликовано mensh - сб, 11/08/2008 - 03:38

Для создания репозитория 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

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

Включить пользователя в группу cvsusers можно прямым редактированием файла /etc/group:

root@localhost:~:# mcedit /etc/group
...
cvsusers:x:103:oleg

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

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 /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

Владельцами нового проекта является пользователь, который его импортировал, и группа cvsusers:

oleg@localhost:~:$ stat /cvsroot/linuxcookbook
 File: `/cvsroot/linuxcookbook`
 Size: 144 Blocks: 0 IO Block: 4096 Каталог
Device: 306h/774d Inode: 19058 Links: 6
Access: (2775/drwxrwsr-x) Uid: ( 1000/ oleg) Gid: ( 103/cvsusers)
Access: 2008-11-06 19:58:48.000000000 +0500
Modify: 2008-11-06 19:58:49.000000000 +0500
Change: 2008-11-06 19:58:49.000000000 +0500

Для защиты от внешнего доступа файлов репозитория CVS настоятельно рекомендуется задать всем пользователям маску umask равную 007, для чего в файл ~/.bashrc каждого пользователя можно включить строку:

umask 007