1)       安装 CVSNT-2.5.03;安装wincvs1.3;安装python2.2。

注意:

a、cvs.exe 既是 server 又是 client,如果仅作为 client 端,想要运行 cvs 命令,也必须安装它;

b、python2.2安装之后要设置系统环境,具体步骤是:右击我的电脑-属性-高级-环境变量-新建:变量名可以为path,变量值既是python的路径。

C、注意设定 CVSNT Repository  例如ivyroot;还有就是cvsnt里面run as 的设置要选计算机名的那一项。

2)       打开wincvs,设置后,用administrator登陆,打开命令行

   cvs passwd –a –r administrator lirx  (设置账号lirx)

   两次输入密码

3)       checkout仓库ivyroot下的cvsroot模块(注意:还是用administrator账号来checkout)

4)       在本地cvsroot中加入admin文件(注:在cvsroot加入的文件不要带后缀,admin文件用来指明cvs的管理员帐户,一行为一个用户),格式为:

lirx  (这样就指明了lirx为cvs的管理用户)

提交。

5)       在checklist文件中,加入一行,内容是:admin;提交。

6)       添加writers文件,加入要赋予write权限的用户,例如:

Administrator

lirx

lirx1

lirx2

lirx3

lirx4

提交。

(注:如果用户a没有存在于writers文件中,则对cvs模块均没有写权限)

7)       删除本地的cvsroot,用lirx,即用我们刚刚创建的管理员帐户来登录,重新checkout出cvsroot。

8)       修改config文件,把里面第二行的“#SystemAuth=yes”改为“SystemAuth=no”,取消了双层登录模式,即可用cvs帐户亦可用系统帐户,改成之后就只能用cvs帐户登录,即原先的administrator失效,只能用admin文件中存在的用户来登录cvs了。

9)       用cvs passwd -a username命令添加用户lirx1、lirx2、lirx3、lirx4。各用户可以用各自的账户名登录后用cvs passwd username命令修改密码。

10)    至此,关于cvs系统的设置就到一段落了。

 

11)    用lirx登录的状态下,在和之前checkout出来的cvsroot同个根目录里,新建一个文件夹,命名为ivy1,在里面新建一个test.txt文件。然后在wincvs中,点中ivy1这个文件夹,选择“导入项目\模块”-“继续”,显示成功。然后,把本地刚才新建的ivy1文件夹删除,再重新checkout出ivy1。

12)    默认情况下,对于一个新建的模块,任何用户都有其任何权限,因此,我们checkout出ivy1之后,用cvs chacl -a none命令取消所有默认权限,然后用cvs chacl -u lirx -a all命令赋予lirx所有权限。如果要再给用户lirx1读写权限,可以用cvs chacl –R -a read,write -u lirx1命令。(注:可用“cvs chacl –R -a none -u username 目录1 目录2” 表示给用户username分派目录1,目录2无任何操作的权限;用“cvs chacl -R -a read,write -u username 目录1 目录2”,表示给用户username分派目录1,目录2可以读写的权限.)总结:每次执行一个用户的权限更新都会累加或者覆盖(操作同一用户的时候)其以前的所有的权限的配置。

13)    删除用户username              [命令]cvs passwd -X username(X为大写)

14)    如果包含子目录也要同样的操作-R(-r不行)
如:cvs chacl -R -a none

15)    cvs lsacl可查询当前的用户权限。

16)    删除文件有两个命令,一个是Remove,一个是Erase,都在主菜单Modify下面。 其中,Remove是同时把文件从本地和远程仓库删除掉,而Erase是删除本地文件,不动远程仓库中的版本。

Remove操作方法是:先选择需要从CVS管理中删除的文件,再选择主菜单Modify,然后选择Remove子菜单,为了从CVS仓库删除它,还需要进行Commit操作。

与Remove相似的功能是Erase功能,在Modify主菜单下。Erase的功能是把你本地的文件删除掉,而远程仓库中的相应文件不受影响。当您选择一个文件,进行了Erase操作之后,这个文件被打上了“Missing”的标记,含义是这个文件在远程仓库有,而本地不存在。既然这个被erase的文件在仓库中有,我们就可以从仓库中把它取回一份到本地。具体操作是:选定状态为missing的文件,按下鼠标右键,在弹出菜单中,选择“Update…”子菜单,在随后出现的对话框中,钩上“Get the clean copy”选项,按“确定”,就会发现已经在本地删除的文件又从远程仓库拷贝了一份回来。

 

对于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 没有任何权限

 

需要说明的是,read|write|create|tag|control 之间没有权力大小之分。如果有write权限的话,未必有read权限。如你只给某一个用户写的权限的话,他是无法读出的。对于有写权限的人,一般会给他读的权限(要不怎么写啊)。

对于create 只有创建目录的权限,如果目录下面有文件,你必须还要有write权限才行。

对于control 如果某用户对某目录有control权限,那么这个用户可以使用cvs chacl命令更改这个目录的权限。

对于all 如果某个用户对某个目录有all权限,那么这个用户将拥有所有权限。

对于tag 不需要有wirte权限也可以tag,但应该给其read权限。

cvs chacl -u g2 -a read,nowrite HelloWorld.java

上述命令赋予g2群组当前目录下HelloWorld.java文档的读权限,拒绝其写权限。

cvs chacl -R -u cvsuser2 -d .

上述命令取消cvsuser2 用户对当前目录对应的服务器目录的所有权限。

需要说明的是:CVS不仅可以对目录做权限控制,还能对文件做权限控制。

 

请注意:这里是一个CVSNT 2.5.03 build 2382 bug

当进入被cvs checkout出来的项目客户端文件夹时,并且这时你并不是使用checkout所使用的帐户登录的,cvs会自动使你变更成为checkout时所使用的帐户。

危害描述:可以借此漏洞夺得他人帐号控制权,甚至最高管理员权限。

解决方法:在使用时请勿在他人的计算机上使用自己的帐号checkout项目,尤其是管理员帐号。

 

设置相对路径:

在本地的一个文件夹中,右击cvs—创建新模块,最下面的模块名称填入您要获取的文件的路径,点确定。(注意:不能在根目录下新建模块)

取下来的带有绿色勾勾标记的文件夹可以自由放在任何没有标识的文件夹下面,其里面的文件依然对应着服务器上的路径。

"cvs update" 后在信息框里会列出你的操作,你的文件update的情况,这里是CVS使用的所有其它单字符信息性消息的列表:
U [path] 在本地机更新get到了服务器上最新的或者最新版本的文件。
P [path] 像“U”一样,只是在update时你的网络带宽少的情况下CVS服务器所出现的提示。
M [path] 这意味着您已经修改过该文件了;而且,有可能资源库中新的更改已成功地合并到该文件。
C [path] 错误警报,"C" 字符表明该文件存在冲突,需要在使用 "commit" 提交前解决这冲突。 当试图更新文件时检测到了一个冲突(也就是说,在本地修改的代码和与在仓库中被修改的代码有冲突)。这个文件在本地的副本中包含冲突记号,而文件原来的版本存放在一个叫做.#文件.version的新文件中
A [path] 该文件是计划要添加的,即添加了但尚未提交,这时你还使用update命令,CVS就会有这个提示,当你 "commit" 时,它被正式添加到服务器库中,问题解决。
R [path] 象 "A" 一样,"R" 让您知道该文件计划要删除的,即删除了但尚未提交,这时你还使用update命令, CVS就会有这个提示,当你 " commit" 后,该文件就会从服务器库中删除,问题解决。

?  文件  文件只存在于工作区中但是仓库中没有这个文件的任何信息。可以使用cvs add 命令来添加这个文件,或者通过修改.cvsignore文件来让cvs忽略这个文件

只有管理员才能修改日志

 

感叹号:

本地在旧版本上更改,然后commit,出现差异,没有改过来,然后update,就出现感叹号

update到head版本,就把服务器上最新的下下来了,而修改的那一份会备份为.#开头的文件,还有一份.#文件是针对最新版本和做修改版本的对比。

wincvs加锁:

在文件提交的过程中选择“检出文件只读”,解锁时重新提交。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/iammingbohello/archive/2009/03/12/3982782.aspx