Q1: So is there a way to restructure this and retain the history?
Как вы написали в своем комментарии, если у вас есть sys privs, вы можете mv
модули по всему хранилищу и хранить историю всех файлов ниже A и B, но при этом,вы теряете историю, в которой / A когда-то были Module1 / A и / B - в Module1 / B (не говоря уже о том, что сценарии сборки, вероятно, сейчас ломаются).Subversion
решает эту проблему для вас, предлагая команду move
(или переименование), которая запоминает историю перемещения / переименования модуля.
Q2: Is there a way to set up security so that certain users can check out Module1/A only and not Module1/B ? and vice-versa?
Конечно, используется группаразрешения.На этой странице http://www.linux.ie/articles/tutorials/managingaccesswithcvs.php Вот фрагмент, на который я ссылаюсь в случае, если эта страница исчезнет
Каждому модулю его группы
Ранее мы видели, как создание группы cvsusers помогло в координации работы нескольких разработчиков.Мы можем расширить этот подход, чтобы разрешить ограничения регистрации на уровне каталога.
В нашем примере предположим, что модуль "cujo" должен быть ч / б для Джека и Джона, а модуль "Кэрри" -ж / д для Джона и Джилл.Мы создадим две группы, g_cujo и g_carrie, и добавим соответствующих пользователей к каждой - в / etc / group добавим
g_cujo:x:3200:john,jack
g_carrie:x:3201:john,jill>
Теперь в хранилище (от имени root) запустите
find $CVSROOT/cujo -exec chgrp g_cujo {} \;
find $CVSROOT/carrie -exec chgrp g_carrie {} \;
, гарантирующее, как и прежде, что во всех каталогах установлен бит gid.
Теперь, если мы посмотрим в хранилище ...
john@bolsh:~/cvs$ ls -l
total 16
drwxrwsr-x 3 john cvsadmin 4096 Dec 28 19:42 CVSROOT
drwxrwsr-x 2 john g_carrie 4096 Dec 28 19:35 carrie
drwxrwsr-x 2 john g_cujo 4096 Dec 28 19:40 cujo
и если Джек пытается совершить изменение Кэрри ...
jack@bolsh:~/carrie$ cvs update
cvs server: Updating .
M test
jack@bolsh:~/carrie$ cvs commit -m "test"
cvs commit: Examining .
Checking in test;
/home/john/cvs/carrie/test,v <-- test
new revision: 1.2; previous revision: 1.1
cvs [server aborted]: could not open lock file
`/home/john/cvs/carrie/,test,': Permission denied
jack@bolsh:~/carrie$
Но в Кудзё проблем нет.
jack@bolsh:~/cujo$ cvs update
cvs server: Updating .
M test
jack@bolsh:~/cujo$ cvs commit -m "Updating test"
cvs commit: Examining .
Checking in test;
/home/john/cvs/cujo/test,v <-- test
new revision: 1.2; previous revision: 1.1
done
jack@bolsh:~/cujo$
Процедура добавления пользователя теперь немного сложнее, чем могла бы быть.Чтобы создать нового пользователя CVS, нам нужно создать системного пользователя, добавить его в группы, соответствующие модулям, в которые они могут писать, и (если вы используете метод pserver) сгенерировать для них пароль и добавить записьв CVSROOT / passwd.
Чтобы добавить проект, нам нужно создать группу, импортировать источники, изменить группы для всех файлов в хранилище и убедиться, что установленный gid для бита выполнения установлен на всехкаталоги внутри модуля и добавление соответствующих пользователей в группу.
Несомненно, для этого нужно больше администрирования, чем когда мы толкаем людей острой палкой.В этом методе нам никогда не нужно добавлять системного пользователя или группу или изменять группы в каталогах - все, что позаботится, как только мы настроим хранилище.Это означает, что непривилегированный пользователь может быть администратором CVS, не имея привилегий root на компьютере.