Chinaunix首页 | 论坛 | 博客
  • 博客访问: 351594
  • 博文数量: 67
  • 博客积分: 2550
  • 博客等级: 少校
  • 技术积分: 990
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-17 18:24
文章分类

全部博文(67)

文章存档

2011年(6)

2010年(2)

2009年(40)

2008年(19)

我的朋友

分类: WINDOWS

2009-03-01 21:03:12

 CVS是目前最常用的版本控制和软件配置系统。其开源性在其普及的过程中功不可没,然而正因为开源造成了其易用性较差。往往一个功能需要通过几个看似不相干的操作配合才
能进行。Windows下CVS的多帐户配置正是这样一个相当重要的,但很不好操作的功能。几个难点如下:
        CVS源自Unix系统,其Windows的移植版并没有服务器功能。在Windows下一般采用安装CVSNT这个软件来建立CVS Repository,但CVSNT的操作方法和原始的CVS略微不同。
        CVS本身是命令行形式,其配置过程比较繁杂。
        CVS的多帐户配置需要手动修改Repository的CVSROOT文件夹里的文件,缺乏统一的界面。
        在安装了CVSNT服务器之后,默认的用户就是建立Repository的Windows系统的登陆帐户,但在多人开发的时候,肯定没人希望大家都使用同一个名字来Commit;更重要的
是,我们可能需要配置开发人员的权限,例如限制某些人只能看程序,而某些人可以Commit程序,某些人可以添加新的Module。以下是详细的步骤,环境是CVSNT 2.5.03 (Build
2151) + TortoiseCVS 1.8.25:
        1. 使用CVSNT建立一个Repository。假设初始使用Windows的管理员administrator密码登陆,Repository使用Pserver协议,IP是1.2.3.4,端口号是2401,Repository名称
是/TestRep,密码是123。这时的administrator也是此Repository的管理员。
        2. 为了进行多用户配置,必须修改Repository的CVSROOT目录的几个文件。首先在客户端将: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的读写权限,否则到最后任何映射到cvsuser的CVS帐户都会因为
没有写权限无法进行正常的commit操作。首先在服务器上的资源管理器里的“工具”菜单里找到“文件夹选项”,在随后出现的“查看”选项卡里找到“使用简单文件夹共享”的
项目,取消掉前面的勾,单击确定。然后右击/TestRep所在文件夹,单击“属性”。在随后打开的对话框里可以看到“安全”选项卡。我们需要在这里添加cvsuser的读写权限。
        4.为CVS添加自己的帐户。通过使用命令cvs passwd我们可以添加任意多个CVS帐户(当然,只是针对当前的Repository)。所有的帐户信息会被保存在CVSROOT目录的
passwd文件当中。然而这个文件是不能Check Out出来的,只能在服务器那里看到它,并且其保存的密码信息是被加过密的。我们可以添加cvsadmin,user1,user2,anonymous等
用户。例如添加cvsadmin时的命令是:
        cvs passwd -a -r cvsuser cvsadmin
        //输入cvsadmin的密码
        //再次输入cvsadmin的密码
        这样就新添了cvsadmin帐户,并将其映射到Windows帐户cvsuser上(-a表示添加一个账户,-r表示影射到操作系统的帐户中。我期望将cvsadmin作为以后/TestRep的管理员
。这一点十分重要,如果这时候不设置的话,再将CVS改为“仅使用CVS帐户校验模式”之后就再也没有机会添加管理员了(因为只有管理员可以看得到和操作CVSROOT目录)。

 5.设定cvsadmin为CVS管理员。在客户端的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 ""
        不过在提交之前,你也许想先把CVSROOT的owner从原来的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个工程,project1、project2、project3。使用命令:
        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命令可以实现组权限的修改。
10、向CVS添加新的项目模块
一般我们都已经有一个或多个项目了,这样我们可以用下面步骤生成一个新的CVS项目。将一个工程文件置于CVs中进行版本控制,在CVS 术语中称作导入(import)。从名字上就可
以看出,在导入前需要为此作些准备工作。
输入操作的基本要求是有个"干净"的目录结构。"干净"的意思是不需要版本控制的文件都被移走了(如编译生成的文件,备份文件等等)。如果工程已经开始一段时间了,这就显
得很重要。在目录中也许有些是不打算将其置于版本控制下的文件,但是又想将他们放在这里,这种情况下,你要在输入之前将它们移走,然后再移回来。
注意的是CVS 认为空目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录,需要在其下创建一个哑文件。建议你创建一个名为 README.txt 的文件,其内容为对
目录的简要说明。
进入到已有项目的目录,比如叫 cvstest:

    $cd cvstest
运行命令将项目文件导入到cvs仓库中:

    $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start
说明:import 是cvs的命令之一,表示向cvs仓库输入项目文件。
-m参数后面的字串是描述文本,对项目进行描述,如果不加 -m 参数,那么cvs会自动运行一个编辑器(一般是vi,但是可以通过修改环境变量EDITOR来改成你喜欢用的编辑器)让
你输入信息,cvstest 是项目名称(实际上是仓库名,在CVS服务器上会存储在以这个名字命名的仓库里) v_0_0_1是这个分支的总标记.没啥用(或曰不常用)。start 是每次
import 标识文件的输入层次的标记,没啥用。这样我们就在用户指定进行初始化的目录/home/cvsroot下建立了一个名字叫cvstest的CVS模块了,然后,我们可以把这个测试项目
的文件删除,试验如何从仓库获取文件这会在后面的客户端文章进行说明。(注:本小节主要引用自何伟平的“CVS服务器快速指南”)
 
11 设置用户权限.
------------------------------------------
CVS用户管理是比较复杂的部分,也是十分重要的部分。通过CVS用户管理可以创建CVS用户,并给每个用户赋予访问各个目录的权限。对于使用Pserver登陆的方式,需要对资源库
的CVSROOT目录以及在这个目录树里的所有目录做严格的权限限制,这是因为 $CVSROOT/CVSROOT 目录包含 passwd 和其它与安全审核相关的文件,任何对这些目录具有写访问的用
户将有能力成为系统上的任何用户。

1) 准备知识
CVSNT 的用户验证方式分两种:Windows系统用户与CVSNT用户共存的混合验证方式,及CVSNT用户单一验证方式,默认工作在混合验证方式下。选用混合验证方式,创建CVSNT用户
的过程就是创建Windows用户的过程,因此当CVS用户较多的时候,不容易管理,因此推荐使用单一验证方式。
各个资源库所使用的验证方式及用户配置由其目录下CVSROOT里的配置文件决定,其中有几个比较重要的文件:
 
 config文件
控制CVSNT的验证工作方式的就是config文件,注意该文件最前面的两行:
#Set this to ‘no’ if pserver shouldn't check system users/passwords
#SystemAuth=yes
第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no:
yes:pserver将使用Windows系统用户和CVSNT用户来共同验证(若CVSNT用户未定义,则用Windows系统用户来进行验证),默认为yes,CVSNT用户在后面将要介绍的passwd文件中
定义。
no:只使用CVSNT用户来进行验证。
该文件可以在客户端进行修改,因此我们可以检出CVSROOT后,将第二行改为SystemAuth=no,并commit到CVSNT上就可以启用单一验证方式了,注意启用单一验证方式后原来的
Windows系统用户将无法登陆CVS。
 
 admin文件
该文件保存CVSNT管理员用户列表,内容很简单,形式如下:
User1
User2
User3
每一行定义一个管理员用户,默认时没有该文件,但你可以在客户端自己添加并add上去,再commit到CVSNT上,但是光有这个文件还是不会生效的,还要将其添加到checklist文件
中,使CVSNT能够读取该文件的内容,在checklist中添加文件列表的格式为:
[空格]文件名 出错信息
其中文件名前的空格必须要有的,不然会出错。
我们可以先添加admin文件到CVSNT中,再修改checklist文件commit,就可以使admin文件生效了。
 
 passwd文件
服务器工作在CVSNT用户单一验证方式下的时候,这个文件定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名信息。默认状态下没有该文件,但是我们可以在
CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。
添加用户的命令的示例:
cvs passwd –r administrator –a cvsadmin
之后系统提示输入密码,输入后服务器会新建一个passwd文件。
该文件的内容很简单,形式如下:
cvsadmin:6kj2yopEuCacs:administrator
wangp:Lm9pr9a1FAl0U
chu:UnEKuKtsgm242
以第一行为例:cvsadmin为用户名,fqr1fS4gDghrt为CVS使用UNIX标准加密函数对密码进行加密后的结果,administrator为该用户的别名,当使用混合验证方式时对应Windows系
统用户名。
注意:这个文件是不能在客户端进行修改的,不能checkout出来。
 
 group文件
这个文件是定义系统的组,我们可以将同样性质的用户归入一个组,然后用给用户赋权限的方式给组赋权限,这样,一个组的用户就会具有同样的权限。Group的内容如下:
group1:user1 user2 user3
group2:me you he
group3:tom jerry
有上面可以看出来,这个文件的内容也是相当的简单,首先是组的名称然后是冒号,接着是用户名,多个用户名之间用空格来进行分割。
Group文件可以在客户端进行新建和修改,不用修改checkoutlist这个文件,系统会自动build这个文件并且使之生效。
 
创建用户
 设置环境变量
在命令行创建用户之前,必须设置两个环境变量:
CVSROOT:指向服务器仓库的目录;
Path:指向CVSNT的安装目录。
 利用系统管理员创建CVS用户
首先要注意的是,在系统命令行中只有系统管理员可以创建用户,CVS管理员不能创建用户或者修改用户密码。
 用Administrator用户取出CVSROOT目录;
>cvs co CVSROOT
 在CMD中进入取出的CVSROOT目录;
 用cvs passwd –r administrator –a CVSAdmin命令建用户并输入用户口令,这里使用administrator用户为别名,可以使用其它系统中的用户名建用户,但由于这些用户可能
不会被CVSNT使用,因为这些用户没有权限在默认的临时文件夹中写临时文件,所以客户端不能正常工作。如果增加这个用户的权限,却带来安全的隐患,因此建议用
administrator用户作别名;
 创建windows系统用户cvsuser,权限为user。
 多次使用cvs passwd –r cvsuser–a username命令创建cvs普通用户,为每个使用cvs的用户分配用户名和密码;
 在取出的CVSROOT目录中建一个文本文件:admin,在这个文件中填上Repository的管理员用户,如:CVSAdmin,并将该文件上传到服务器上;
 在取出的CVSROOT目录中修改checkoutlist文件,加入一行admin (注意前后均要有空格,否则可能会出错),上传到服务器上,以便CVS服务器能自动通过新建的文件知道管理
员账号;
 在取出的CVSROOT目录中修改config文件的SystemAuth=no,并去掉前面的注释符号#,在提交之前要确认一下你上面的修改是否正确,如果提交了这个文件,CVSNT验证模式就开
始生效了,此时,使用Windows系统用户将无法登录到CVS。
 
 查看CVS服务器资源库中的CVSROOT中的passwd文件,可发现,wang已经加入到passwd文件中,证明创建用户成功。
 配置单个用户权限
只有管理员或者被赋予control权限的用户才有权力对用户进行权限配置。下面介绍利用上述创建的CVS管理员账户CVSAdmin对CVS用户进行权限配置的具体过程。
 先在WinCVS中以CVSAdmin用户登录,并将该文件夹的CVSROOT改为使用CVSAdmin登录
 由于WinCVS的命令行不支持cvs chacl命令,但是可以直接在WinCVS输出中输入chacl命令。当然接下来的操作也可以在系统命令行中完成,在命令行中设定权限需要先进入该文
件夹目录下,在命令行和在WinCVS中的命令格式不尽相同。
 首先介绍在命令行中的格式:
(a) 输入“cvs chown CVSAdmin”,宣布该文件夹的拥有者为CVS管理员,这条命令执行后,在该文件夹中的下一层目录—“CVS”中的“fileattr.xml”已经写入了这个目录的属有
者。
(b) 用“cvs chacl –a noread,nocreate,nowrite,nocontrol”命令给文件夹设定默认访问权限。
(c) 用“cvs chacl”命令设定文件夹的访问权限,“cvs chacl”命令的详细描述如下:
cvs chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control|all|none}[,...]] [-d] [file or
directory...]
cvs rchacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control|all|none}[,...]] [-d] [file or
directory...]
如: cvs chacl -R -a read,write -u user1
现在分别对这几个参数做一下说明:
read 读权限
write 写权限
create 创建目录的权限
tag 创建tag权限
control 控制权限
all 所有权限
none 没有任何权限
默认情况下,任何用户都拥有任何目录的所有权限。
任何情况下只有目录的拥有者和或拥有control权限的用户才有权力更改目录的使用权限。
需要说明的是,read|write|create|tag|control 之间没有权力大小之分。如果有write权限的话,未必有read权限。如你只给某一个用户写的权限的话,他是无法读出的。对于有
写权限的人,一般会给他读的权限。
对于create 只有创建目录的权限,如果目录下面有文件,你必须还要有write权限才行。
对于control 如果某用户对某目录有control权限,那么这个用户可以使用“cvs chacl”命令更改这个目录的权限。
对于all 如果某个用户对某个目录有all权限,那么这个用户将拥有所有权限。
对于tag 不需要有wirte权限也可以tag,但应该给其read权限。
需要说明的是:CVS不仅可以对目录做权限控制,还能对文件做权限控制。
 配置群组用户权限
上一小节中所阐述的方法只能一个一个的为单个用户设定权限,当项目参与人员过多时,使用这种方法难免显得繁琐。这种情况可以使用group,位参与人员划分群组,为每个群组
分配相应的用户权限。其步骤如下:
 在cvsclient端的CVSROOT目录下,创建group文件,注意该文件没有扩展名,group文件的格式如下:
group1:user1 user2
group2:user3 user4
group3:user5 user6
例如一个group文件内容如下:
manager:zhang
leader:chu
developer:wu wang huang zhou wangp
 将该group文件commit到CVS服务器端
 先在WinCVS中以CVSAdmin用户登录,并将该文件夹的CVSROOT改为使用CVSAdmin登录
 在系统命令行中输入
cvs chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control|all|none}[,...]] [-d] [file or
directory...]
其中[-u user]的user,用group名称代替,如:
cvs chacl –R –a write,read,create –u developer
这样developer组中的所有用户都将拥有读、写、创建的权限了。
-----------------------------------------------

12 记得在服务器端打开2401端口.

13 开户cvs history, 在CVSROOT/下面建立history文件.
14 打开本机连接里面防火墙的"web 服务器", 安装jre
----------------------------------------------------------

一、首先安装CVSNT,我装的是2.5.03版本,下载地址是

    安装完成后如图: 

 设置一下你的仓库,就是代码提交保存的地方

记得把下面两个打勾

ps:有时候cvsnt工作不正常,可以试试给它换个temp目录,我遇到过好几次了

二、安装CVSTracNT

cvstrac本来是在linux下面跑的,这个是for windows版本。cvstrac功能太强大了,我就不多说, 大家自己去体验吧

下载CVSTracNT 

安装完成后会自动检测你本机的CVS仓库

点击“浏览”后,弹出管理页面,可以用setup setup作为用户名 密码登录,在用户栏目里面,可以创建用户

 

三、安装viewcvs

由于我们使用IIS来浏览viewcvs(当然你也可以用apache),所以你要先安装IIS

window下面的viewcvs配置比较复杂,还好在网上找了个集成了差不多的软件,只要安装好Python就可以直接安装运行了,爽啊

集成了windows扩展的python下载地址

viewCvs4CVSNT软件下载地址

安装完成后,软件会扫描你的计算机,所以要等个几分钟。

安装完成后,会自动在IIS里面创建虚拟目录ViewCvs  如果你只有一个CVS仓库,所以打开 时,会自动指定你默认的CVS仓库

viewcvs功能是很强大的,可以浏览你文件的版本信息,还可以生成图片式的tag变化,并且支持版本对比,语法高亮,等等。

四、安装statcvs

其实statcvs就一个jar包,也谈不上安装了

首先download  statcvs

阅读(3982) | 评论(1) | 转发(0) |
0

上一篇:gcc参数详解

下一篇:内核模块调试代码

给主人留下些什么吧!~~

chinaunix网友2009-05-15 15:37:55

好文! 有问题看这里:http://www.mofun.cc/web/lwgboy/1/-/blogs/92262