Реструктуризация хранилищ CVS и сохранение истории - PullRequest
0 голосов
/ 07 июня 2011

В настоящее время в нашем хранилище CVS есть следующее:

Module1
  |
  |
  +-----A
  |
  +-----B

Мы хотим реструктурировать этот модуль так, чтобы подкаталоги A и B отображались как модули высокого уровня. Что я мог сделать, так это проверить Module1, а затем вытащить A и B, а затем сделать новые cvs add для A и B по отдельности, тем самым сделав их новыми модулями cvs. Но я уверен, что если я сделаю это, я потеряю историю, а также мне пришлось бы удалить все внутренние папки CVS в A и B.

Q1: Так есть ли способ реструктурировать это и сохранить историю?

Что я по сути пытаюсь сделать, это отфильтровать доступ между А и В. Итак -

В2: Есть ли способ настроить безопасность, чтобы определенные пользователи могли проверять только Модуль 1 / А, а не Модуль 1 / В? и наоборот?

1 Ответ

2 голосов
/ 15 июня 2011

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 на компьютере.

...