目前,我们的CVS信息库中包含以下内容:
Module1
|
|
+-----A
|
+-----B
我们希望重组此模块,使子目录A和B显示为高级模块。我能做的是检查Module1然后拉出A和B,然后分别为A和B做一个新的cvs add
,从而使它们成为新的cvs模块。但我相信如果我这样做,我将失去历史记录以及我必须删除A和B下的所有内部CVS文件夹。
Q1:那么有没有办法重组并保留历史记录?
我基本上要做的是过滤掉A和B之间的访问权限。 所以 -
Q2:有没有办法设置安全性,以便某些用户只能查看Module1 / A而不是Module1 / B?反之亦然?
答案 0 :(得分:2)
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”是插孔的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的一个条目。
要添加项目,我们需要创建一个 组,导入源,更改 组中的所有文件 存储库并确保设置gid 在执行位上设置所有 模块内的目录,并添加 该组的相关用户。
毫无疑问会有更多 政府需要做到这一切 比起我们用尖尖刺戳人的时候 棒。在那种方法中,我们从来没有 添加系统用户或组或 更改目录上的组 - 全部 一旦我们成立,这就得到了照顾 存储库。这意味着一个 未成熟的用户可以是CVS管理员 没有根本权利 机器。