Создание общего репозитария 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

Для предоставления пользователям доступа к репозитарию они включаются в группу 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

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