#repository #cvs #history
#хранилище #резюме #история #репозиторий
Вопрос:
В настоящее время в нашем репозитории CVS есть следующее :
Module1
|
|
-----A
|
-----B
Мы хотим реструктурировать этот модуль таким образом, чтобы подкаталоги A и B отображались как модули высокого уровня. Что я мог бы сделать, это проверить Module1, а затем извлечь A и B, а затем сделать новый cvs add
для A и B по отдельности, таким образом, сделав их новыми модулями cvs. Но я уверен, что если я сделаю это, я потеряю историю, а также мне пришлось бы удалить все внутренние папки CVS в разделах A и B.
Q1: Итак, есть ли способ реструктурировать это и сохранить историю?
По сути, я пытаюсь отфильтровать доступ между A и B. Итак —
Q2: Есть ли способ настроить безопасность так, чтобы определенные пользователи могли проверять только Module1 / A, а не Module1 / B ? и наоборот?
Комментарии:
1. ОК. Мне кажется, что если у меня есть права доступа к файловой системе, я мог бы просто зайти на сервер CVS, получить cvs root и переструктурировать каталоги. Каталоги, перемещенные прямо под cvsroot, будут доступны для проверки в качестве новых модулей. Кто-нибудь видит какую-либо проблему?
Ответ №1:
Q1: So is there a way to restructure this and retain the history?
Как вы написали в своем комментарии, если у вас есть системные привилегии, вы можете 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» должен быть r / w для Джека и Джона, а модуль «carrie» должен быть r / w для Джона и Джилл. Мы создадим две группы, 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$
Но в cujo проблем нет.
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.Чтобы добавить проект, нам нужно создать группу, импортировать исходники, изменить группы для всех файлов в репозитории и убедиться, что бит set gid on execution установлен для всех каталогов внутри модуля, а также добавить соответствующих пользователей в группу.
Для всего этого, несомненно, требуется больше администрирования, чем когда мы тыкаем в людей заостренной палкой. В этом методе нам никогда не нужно добавлять системного пользователя или группу или изменять группы в каталогах — обо всем этом позаботятся, как только мы настроим репозиторий. Это означает, что непривилегированный пользователь может быть администратором CVS, даже не имея прав root на компьютере.
Комментарии:
1. 1 и принято! Спасибо, что подробно объяснили это