`
srj2903
  • 浏览: 103954 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

CVS配置 [转]

阅读更多

<!----><!----><!----> <!---->

CVS 是目前最常用的版本控制和软件配置系统。其开源性在其普及的过程中功不可没,然而正因为开源造成了其易用性较差。往往一个功能需要通过几个看似不相干的操作配合才能进行。WindowsCVS 的多帐户配置正是这样一个相当重要的,但很不好操作的功能。几个难点如下:

  1. CVS 源自Unix 系统,其Windows 的移植版并没有服务器功能。在Windows 下一般采用安装CVSNT 这个软件来建立CVS Repository ,但CVSNT 的操作方法和原始的CVS 略微不同。
  2. CVS 本身是命令行形式,其配置过程比较繁杂。
  3. CVS 的多帐户配置需要手动修改RepositoryCVSROOT 文件夹里的文件,缺乏统一的界面。

在安装了CVSNT 服务器之后,默认的用户就是建立RepositoryWindows 系统的登陆帐户,但在多人开发的时候,肯定没人希望大家都使用同一个名字来Commit ;更重要的是,我们可能需要配置开发人员的权限,例如限制某些人只能看程序,而某些人可以Commit 程序,某些人可以添加新的Module 。以下是详细的步骤,环境是CVSNT 2.5.03 (Build 2151) + TortoiseCVS 1.8.25

1. 使用CVSNT 建立一个Repository 。假设初始使用Windows 的管理员administrator 密码登陆,Repository 使用Pserver 协议,IP1.2.3.4 ,端口号是2401Repository 名称是/TestRep ,密码是123 。这时的administrator 也是此Repository 的管理员。

2. 为了进行多用户配置,必须修改RepositoryCVSROOT 目录的几个文件。首先在客户端将:pserver:administrator@1.2.3.4/TestRep 设为CVSROOT 环境变量(请注意区分CVSROOT 目录和CVSROOT 环境变量)。然后用administrator 登陆到CVS ,最后Check Out 出此CVSROOT 目录。命令如下所示:

cvs login
//
输入密码123
cvs co CVSROOT

3. 在服务器端为Windows 添加一个专门用于CVS 操作的Windows 帐户。所有的CVS 帐户都要映射到这个Windows 帐户上进行实际的操作。虽然很多资料并没有提到需要建立Windows 帐户,但我在实验中发现没有这种帐户,CVS 在后边执行任何操作时都会报告没有此帐户的错误。假如这个新的帐户叫做cvsuser 。使用Windows 命令

net user cvsuser cvsuserpassword /Add

可以添加此帐户。在添加完成之后,一定要记得将/TestRep 在服务器上的实际文件夹的权限里添加cvsuser 的读写权限,否则到最后任何映射到cvsuserCVS 帐户都会因为没有写权限无法进行正常的commit 操作。首先在服务器上的资源管理器里的 工具 菜单里找到 文件夹选项 ,在随后出现的 查看 选项卡里找到 使用简单文件夹共享 的项目,取消掉前面的勾,单击确定。然后右击/TestRep 所在文件夹,单击 属性 。在随后打开的对话框里可以看到 安全 选项卡。我们需要在这里添加cvsuser 的读写权限。

4. CVS 添加自己的帐户。通过使用命令cvs passwd 我们可以添加任意多个CVS 帐户(当然,只是针对当前的Repository )。所有的帐户信息会被保存在CVSROOT 目录的passwd 文件当中。然而这个文件是不能Check Out 出来的,只能在服务器那里看到它,并且其保存的密码信息是被加过密的。我们可以添加cvsadminuser1user2anonymous 等用户。例如添加cvsadmin 时的命令是:

cvs passwd -a -r cvsuser cvsadmin
//
输入cvsadmin 的密码
//
再次输入cvsadmin 的密码

这样就新添了cvsadmin 帐户,并将其映射到Windows 帐户cvsuser(-a 表示添加一个账户,-r 表示影射到操作系统的帐户中。我期望将cvsadmin 作为以后/TestRep 的管理员。这一点十分重要,如果这时候不设置的话,再将CVS 改为 仅使用CVS 帐户校验模式 之后就再也没有机会添加管理员了(因为只有管理员可以看得到和操作CVSROOT 目录)。

5. 设定cvsadminCVS 管理员。在客户端的CVSROOT 目录下新添一个名为admin 的文件。在里面将每一个想要升为管理员的CVS 帐户的帐户名写到文件中,每行一个帐户名。当然admin 文件只有放到服务器,cvsadmin 的升迁才能生效。但是,仅仅是这么将admin 文件提交上去是不能起作用的。在提交它之前,必须将admin 的信息添加到checkoutlist 文件中。checkoutlist 的格式在文件中有介绍,是 空格 文件名 空格 出错信息 回车符 。我们在里面添加一条记录:

 admin adminerror

特别注意admin 前面一定要留一个空格。

6. 当新的CVS 管理员和帐户信息都准备好后,就要将/TestRep 的帐户校验模式从 操作系统集成校验模式 修改为 仅使用CVS 帐户校验 模式。这么做可以避免为了在CVS 中使用多用户时需要操作Windows 帐户的麻烦。这个设置的地方在CVSROOT 目录中的config 文件。打开客户端的config 文件,将里面的#SystemAuth=yes 改为SystemAuth=no (注意将# 删除后,SystemAuth 前不能有空格)。修改后保存config 文件。

7. 提交CVSROOT 里的所有更新到服务器,我们的设置就生效了。命令如下所示:

cd CVSROOT
cvs add -m "" admin
cvs commit -m ""

不过在提交之前,你也许想先把CVSROOTowner 从原来的administrator 修改为cvsadmin 。使用命令cvs chown 可以做到这一点。在提交了CVSROOT 目录后,校验模式就立刻改变了,cvsadmin 也同时开始生效。这时,用之前的administrator 就无法使用CVS 了。我们改用cvsadmin 帐户重新登陆,继续下面的操作。

8. 修改读写权限。CVS 有两种读写权限的设置方法,一是粗粒度的,一是细粒度的。只有CVS 管理员才能进行访问权限的修改。粗粒度的方法是在CVSROOT 中添加readers 或者writers 文件来实现。在readers 里添加的任何一个帐户对当前库只拥有读取权限,添加格式是每行一个帐户名。例如,我们在客户端的CVSROOT 目录里添加readers 文件,将之前的一个新建帐户anonymous 放到里面,然后commit 这个readers 文件到服务器。anonymous 就不能进行commit 了。实际的测试结果是在使用anonymous 登陆之后执行commit 指令,系统会报告正常执行完毕。但实际上,没有任何东西被commit ,暴露了CVS 在人机界面上的不完善。writers 文件的操作readers 完全一样。如果一个帐户名被同时写到两个文件里,此帐户只有只读权限。细粒度的方法是使用chacl 命令。例如/TestRep 里有3 个工程,project1project2project3 。使用命令:

cvs chacl -u user1 -a none -d project1,project2,project3
cvs chacl -u user1 -a all -d project1
cvs chacl -u user1 -a read,write -d project2
cvs chacl -u user1 -a read -d project3

可以让user1 拥有对project1 目录的完全控制权,对project2 目录的读写权,和对project3 目录的只读权。第一条命令首先删除user1 的所有权限,在随后的3 条命令里分别设置了3 个不同目录权限。

9. 使用帐户组来组织帐户。在客户端的CVSROOT 目录下添加一个叫group 的文件。此文件的格式是:

组名1: 用户名1, 用户名2, 用户名3,……
组名2: 用户名5, 用户名7,……
……

修改完group 文件后commit 它,然后通过chacl 命令可以实现组权限的修改。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics