WinCVS与CVSNT简明使用手则

来源:互联网 发布:vscode 服务器启动 编辑:程序博客网 时间:2024/05/21 19:25

1、前言:

CVS
是版本控制的利器,目前在LinuxWindows下都有不同版本;但是国内大多数应用介绍都是基于Linux等开放源代码的开放性软件组织,而且讲解的也不系统,让人摸不着头脑;Windows下的CVS使用介绍更是了了无几。
本文是针对WindowsLAN环境下使用CVS的经验介绍,一步一步的向您介绍如何配置和使用CVS的服务器端和客户端。同时,本文只使用到了CVS当中最基本的东西,还有很多更为高级的东西,本文暂不涉及。下面是本文的另一个连接映射,欢迎大家讨论使用,共同进步。

文章连接
http://www.kuihua.net/book/list.asp?id=66
论坛连接http://www.kuihua.net/bbs/dispbbs.asp?boardID=1&;RootID=670&ID=670

2、安装版本:

2.1
、服务器端(CVSNT)

1. 本文使用的是CVSNT-2.0.4,这是一个比较稳定的版本,不要使用最新的CVSNT-2.1.1,本人在使用中发现有比较严重的Bug
2.
下载连接http://www.cvsnt.org 目前,它提供2.0.62.1.1版本的下载。

3.
上面连接还提供源代码,有兴趣的朋友还可以下载下来仔细研究:)。

4.
有心的朋友,仔细观察就会发现http://www.cvsnt.org 并没有提供任何客户端的下载,那是因为CVS.exe既可以用于服务器端又可以用于客户端,WinCVS是为了客户端使用的方便而定制的外壳。(关于这一点,本人未得到任何证实,只是本人在使用过程中的一种体会,欢迎大家讨论。)

2.2、客户端(WinCVS)

1. 本文使用的是WinCVS-1.3b13,这应该是一个最新版本:),本人在使用过程中并没有发现有任何严重的Bug
2.
下载连接
http://sourceforge.net/projects/cvsgui/
3.
此网站还提供丰富的CVS文档和相关源代码,以及多个OS下面的相关文档和代码;有收藏癖的朋友有福了:)。

4. WinCVS-1.3b13
使用的CVSNT的版本是CVSNT-2.0.2,在与服务器端的CVSNT-2.0.4 版本配合使用时,未发现任何不兼容或冲突现象。

5.
在本人的系统中用cvs version命令显示的结果如下:

Client: Concurrent Versions System (CVSNT) 2.0.2 (client/server)
Server: Concurrent Versions System (CVSNT) 2.0.4 (client/server)

3、服务器端(CVSNT)的安装与配置:

3.1、服务器端机器和环境配置:

1. 操作系统:Windows 2000 Professional SP2中文版
2.
机器名称:
Server
3.
机器地址:192.168.0.6 (内部
IP)
4.
网络环境:100兆交换局域网

5.
硬盘分区格式:FAT32NTFS都可以。

6.
准备2CVSNT的工作目录:

F:/KHRoot (
存放自己源代码的根目录
)
F:/KHTemp (
存放CVS出错信息的目录
)
7.
本机上存在有的用户列表:(由NT或本机的使用者创建)

Administrator (
系统管理员
)
Jackey (
普通用户
)
Goury (
普通用户
)
Riolee (
普通用户)

3.2、安装CVSNT

1. 下载CVSNT-2.0.4;使用administrator登陆到Server机器上。
2.
双击自解压的exe文件,选择Full Install,其它按照默认方式安装;安装完毕后可以在服务控制器中发现多了2个服务:cvsnt
cvslocking
3.
发送Service Control Panel到桌面,形成快捷方式。

4.
安装程序会自动将CVS安装路径,设置到系统的Path环境变量当中,因此使用者可以在控制台(cmd)中任意位置执行cvs.exe,这一点对下面的配置很重要!!

3.3、配置CVSNT服务器:

1. 双击Service Control Panel快捷方式,在Service Status页面,确认2个服务正常和稳定运行。
2.
选择Repository页面,点按Add按钮,选择已经准备好的F:/KHRoot这个目录,确认,OKYes,这时会在F:/KHRoot下面建立CVSRoot目录,这是CVS默认的管理目录(默认模块)。如果报错,那是系统Path路径未设置正确。

3.
选择Advanced页面,勾上Use local users for pserver ...,(Why? I don’t know!J,Temporary栏选择已经准备好的F:/KHTemp,确认,OK

4.
点按【应用】按钮,确认,退出,OK,搞定!!

3.4、小结:

1.
至此,CVSNT服务器端基本配置完毕,下面进行WinCVS的使用和管理。
2.
由于CVS支持远程管理,也就是客户端与服务器集成的特性,因此,我们将添加用户、权限控制、模块维护等所有的管理工作都放到远端(WinCVS)进行管理,服务器端这时可以Ctrl+Atl+Del进入锁定状态了,下面的所有工作都交给远端的WinCVS来进行管理。

4 客户端(WinCVS)的安装与配置:

4.1 客户端机器和环境配置:

1.
操作系统:Windows 2000 Professional SP2中文版
2.
机器名称:
YCW2000
3.
机器地址:192.168.0.2 (内部
IP)
4.
网络环境:100兆交换局域网,可以直接访问到
Server
5.
硬盘分区格式:FAT32NTFS都可以。

4.2 安装WinCVS

1. 下载WinCVS 1.3b13,全部按照默认安装就可以了。
2.
启动WinCVS,开始使用。特别注意:以下的所有操作都是在YCW2000(192.168.0.2)这台机器上远程完成的,此时的Server(192.168.0.6)主机已经进入了锁定状态。

5 管理员使用WinCVS进行远程管理:

5.1 配置WinCVS成管理员状态:

1. 准备管理员工作目录:(YCW2000机器上)
E:/CVSClient/Admin (
管理员工作目录
)
E:/CVSTemp (WinCVS
临时目录
)
2.
第一次启动WinCVS时会自动弹出Preferences配置页面,也可以通过Admin=>Preference菜单进入;第一次使用时需要配置如下的3个页面:

General
页面设置:

注:按照图示方式输入即可,需要注意的是Path部分的格式是Unix路径格式,它指的是CVSNT端设置的工作根目录。

CVS
页面设置: 注:Home路径是设置密码等文件的存放位置,必须指定,否则在登陆时,WinCVS也要弹出设置框。这个Home路径需要Python.exe这个外挂程序才有效。这里选择已经准备好的路径:
E/CVSTemp
WinCVS
页面设置:

注:此页面设置WinCVS的外挂编辑程序,通常使用UltraEdit比较方便。

3.
设置管理员的工作路径:可以点按图标 ,或View=>Browse Location=>Change…菜单进行设置,选择已经准备好的路径:E:/CVSClient/Admin,确认,OK,这时此目录将出现在WinCVS的左边导航栏【Workspace】内。

4.
至此,WinCVS就被配置成了远程的管理员使用状态,下面进行一般管理员需要的基本操作演练。演练的内容为:Administrator需要管理JackeyGouryRiolee三个用户,分别为这3个用户建立工作目录,每个人只能访问自己的工作目录。同时,只有Administrator能够进行权限分配,其它人没有任何管理权限。

5.2 管理员进行管理演练:

1. 登陆远程CVSNT
  
选择Admin=>Login菜单,默认设置,OK
  
弹出密码输入框,确认,OK。注意观察输出框【OutPut】的返回结果。
2. Checkout
默认模块:(CVSRoot管理模块)

  
在左边导航栏【Workspace】内,选择【Admin】点按右键,选择【Checkout
  modules…】,在【Checkout settings】中输入CVSRoot,确定,OK。如下图:

  
如果成功的话,会在【Admin】栏下增加一个【CVSRoot】目录。表示您已经将【
  CVSRoot】这个管理模块下载到本地了。

3. CVS中目录权限介绍:

系统支持的目录权限列表:
r (
读取权限
)
w (
写入权限
)
c (
创建和删除权限
)
n (
没有任何权限
)
默认情况下,任何用户都拥有任何目录的所有权限。
任何情况下只有目录的拥有者和Administrator才有权力更改目录的使用权限。下面将会介绍如何修改目录权限和目录的拥有者。

4. 修改CVSRoot的权限:只让Administrator拥有rcw三种全部权限。

选中刚刚下载的【CVSRoot】模块,【Ctrl+L】或Admin=>Command Line…,弹出Command Line Settings对话框,直接执行CVS命令。
取消所有用户的默认权限:cvs chacl default:n 回车,OK,完成。
设置Administrator拥有所有权限:cvs chacl administrator:rcw 回车,OK,完成。
更改【CVSRoot】的拥有者:cvs chown administrator 回车,OK,完成。
查看【CVSRoot】的权限状态:cvs lsacl 回车,OK,在【Output】中显示:
Owner: administrator
default:n
administrator:rwc
CVSRoot】的权限配置完毕。

5. 编写代码库中的模块文件,便于多用户下载方便。

l 需要自己编写的模块文件格式如下:(实现基本功能)
【模块一的描述】【n个空格或参数】【相对目录路径一(DirA)

【模块二的描述】【n个空格或参数】【相对目录路径二(DirB)

……
【模块X的描述】【n个空格或参数】【相对目录路径X(DirX)

【描述信息】与【相对路径】在字面上不一致时,需要使用-a参数。
【相对路径】指的是CVS会自动带上根路径,这里是F:/KHRoot,所以上面例子的完整路径为:F:/KHRoot/DirA
了解了模块文件结构,现在来实际操作一把:双击【CVSRoot】模块下的modules文件,用UltraEdit打开进行编辑。
JackeyGouryRiolee三个用户分配工作目录和完成其它模块描述。
CVSRoot CVSRoot
Jackey
工作目录
-a Jackey
Goury
工作目录
-a Goury
Riolee
工作目录
-a Riolee
编辑完毕,存盘。回到WinCVS,选中modules这个文件【Ctlr+M】或右键选择【Commit selection…】,默认设置,【确认】,OK,完成上传。

6 . 为三个用户分别上传工作目录:

YCW2000机器上的E:/CVSClient/Admin分别建立三个目录分别名为:JackeyGouryRiolee,作为临时交换目录。
在新创建的每个目录中用UltraEdit或拷贝一个Readme.txt作为引子文件!!:)
然后,回到WinCVS,在【Workspace】栏的【Admin】目录下形成如下的目录结构:
分别选中GouryJackeyRiolee,右键,点按【Import Module】,选择【Continue】,其它全部使用默认值,【确定】,OK,完成上传工作。
仔细观察【Output】窗口,确认都成功上传了。
转移到系统的Explore程序中,删除E:/CVSClient/Admin目录下的JackeyGouryRiolee三个目录。然后回到WinCVS当中。(一定要删除!!!:)
至此,就完成了工作目录的上传工作。

7. Checkout】下载3个用户的工作目录到【Admin】目录下:

在【Workspace】栏选择【Admin】目录,右键,点按【Checkout Module…,如下图:
选择【】,得到CVSNT上最新的模块配置情况,弹出如下的信息框:
这个结构图就是刚才在modules当中编写的模块文件格式信息。选择【Jackey工作目录】,下载到YCW2000机器的E:/CVSClient/Admin目录下。
按照以上操作,依次分别下载【Goury工作目录】和【Riolee工作目录】。形成如下状态:


8.
为三个用户分别设置各自目录的访问权限。(只有自己才能访问自己的工作目录)

选中【Goury】目录,【Ctrl+L】或Admin=>Command Line…,弹出Command Line Settings对话框,直接执行CVS命令。
取消所有用户的默认权限:cvs chacl default:n 回车,OK,完成。
设置Goury拥有所有权限:cvs chacl goury:rcw 回车,OK,完成。
查看【CVSRoot】的权限状态:cvs lsacl 回车,OK,在【Output】中显示:
Owner: administrator
default:n
goury:rwc
按照以上的方法依次分别设置【Jackey】与【Riolee】的工作目录访问权限。
至此,完成了3个用户的目录权限分配。注意,虽然Administrator也没有权力再次【Checkout】那3个用户的工作目录,但是它是这些目录的拥有者又是Administrator,因此,只有它才有权力更改这些目录的访问权限。

9. CVSNT系统中的用户管理原则:

CVSNT的用户与本机(这里是Server机器)上的NT用户是相关联的,即CVSNT用的全是本机上存在的已有用户,因此在默认情况下可以不用设置任何用户名,只要使用本机上已经存在的用户名就可以用WinCVS进行登陆。
只有用Administrator身份登陆到CVSNT系统中,才有权力进行新用户的创建和删除。
使用CVS创建的新用户,必须与服务器端机器上的NT用户相绑定,才能生效;因此,这个新用户实际上是绑定它的NT用户的一个替身,在CVS系统中称为别名
一个NT用户可以有多个替身别名,充当多个CVS用户。

10. WinCVS进行新用户的添加和删除。(确保使用Administrator登陆)

Ctrl+L】或Admin=>Command Line…,弹出Command Line Settings对话框,直接执行CVS命令。
添加新用户【Killer】:cvs passwd -a Killer 回车,设置密码,OK,完成。
绑定【Killer】到【Jackey】:cvs passwd -r Jackey Killer 回车,设置密码,OK,完成。
两次输入的密码可以不同,但以第二次输入的密码为最终密码。
删除用户【Killer】:cvs passwd -X Killer 回车,OK,完成。
其它特殊的功能查看passwd命令的帮助。

11.
使用完毕后,一定要【Logout】,因为WinCVS退出时并不会自动注销自己在远端的会话;这样做是为了防止其它人接着打开WinCVS,不用登陆就可以完成你能进行的所有操作了。

6 WinCVS中常见的特殊操作:

6.1 如何删除下载的文件或目录:

1. 选中下载的某个或多个文件,执行【Remove】命令。
2.
再次选中这些文件,执行【Commit】命令就完成了删除文件的操作。

3.
本质上CVS是不会删除任何文件和目录的,即使是执行了以上操作,删除了某些文件,远端CVS实际执行的是将提交删除的文件放到了一个叫【Attic】的目录下,因此,这些被删除的文件是可以通过一定的方法恢复的。

6.2 如何恢复已经删除的文件或目录:

1. 在执行了【Remove】命令之后恢复文件。
Ctrl+L】直接输入命令cvs add xxxxx,或执行【Add Selection】界面操作。
这样就可以直接恢复还未提交的删除文件。
2.
在执行了【Commit】命令之后恢复文件。

只能用【Ctrl+L】直接输入命令cvs add xxxxx,这时会得到一个空的文件。
选中这个空文件,执行【Update】操作,得到这个文件的实体。
再次选中这个文件,执行【Commit】操作,得到这个文件最新版本。
3.
由于CVS系统中本质上不会删除任何目录,因此,谈不上对目录的恢复,但是CVS系统默认情况下是要在用户本机上(如:YCW2000)要删除空目录,因此,可以用如下方法得到已被删除的空目录:cvs checkout -p xxx,也可以在Admin=>Preference的【Globals】页面进行设置。

4.
可见,CVS系统能够保证:只要上传到服务器的文件,无论你怎么在远程进行如何的操作,正常的或非正常的操作,都可以用Administrator登陆上去,通过以上的方法找到丢失的文件。除非用户进入到远端服务器,将文件手动删除,那就没办法了:)

6.3 如何得到以前版本的文件:

1.
有时我们需要得到以前版本的文件,而WinCVS默认方式只传递最新的版本。
2.
选中某个文件,【Ctrl+G】或右键,点按【Graph selection…】,使用默认设置,就可以得到该文件所以版本的图形结构描述。

3.
选中一个版本,右键,点按【Retrieve revision】,就可以得到相应的老版本文件。当然也可以得到最新版本的文件:)

6.4 有时WinCVS会变得异常缓慢,怎么办?

1.
确认安装了WinCVS的机器上没有安装CVSNT服务器端,因为它们使用的版本有可能不一致。
2.
只安装了WinCVS,但以前安装过其它版本的WinCVS,怎么办?

3.
先卸载所有的WinCVS系统,删除安装目录下的残留文件。

4.
打开注册表编辑器,全程查找cvs关键字,找到一个删除一个,一直到找不到为止!!:)

5.
重新安装WinCVS,这个问题基本上就可以解决了,我就是这样解决,不晓得你那里如何?:)

7 其它说明:

1.
本文的重点在介绍如何让使用者搭建CVSNT+WinCVS这个系统,因此重点介绍了管理员的常用操作,至于一般用户使用到的操作,相对比较简单和单一,使用WinCVS的次数多了,很快就会熟悉它了。
2.
这篇文档只是窥探了CVS的一点皮毛而已,CVS当中还有很多高级的用法,以及上百个命令,还有很多新鲜的管理源代码的方法,比如:tagbranch等模式;因此,热烈欢迎大家积极探索,不断共享,不断进步。。。。。。。。

3.
另外,cvs.html这个帮助,里面的信息也很丰富,但是,很多地方写得不够清楚,需要不断猜测和实践才能知道怎么回事,本文的很多经验都是看这个帮助,如此这般,采用这个笨办法得到的。。。。。。

4.
最后,祝愿看到此文的人,得到的帮助、提高等好处大于或等于浪费的时间、反而退步等坏处!!

 

 

还有一篇:

http://www.study1860.com编程文档热线

先说下CVSNT的用户验证方式,CVSNT的用户验证方式分两种:Windows系统用户与CVSNT用户共存的混合验证方式,及CVSNT用户 单一验证方式,默认工作在混合验证方式下,当然使用单一验证方式对用户的管理肯定比较方便一点,因此下面的配置就是围绕该方式进行的。各个资源库所使用的 验证方式及用户配置由其目录下CVSROOT里的配置文件决定,其中有几个比较重要的文件。

 

1config文件

控制CVSNT的验证工作方式的就是config文件,注意该文件最前面的两行:

#Set this to `no" if pserver shouldn"t check system users/passwords
#SystemAuth=yes

第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yesno

yespserver将使用Windows系统用户和CVSNT用户来共同验证(若CVSNT用户未定义,则用Windows系统用户来进行验证),默认为yesCVSNT用户在后面将要介绍的passwd文件中定义。

no:只使用CVSNT用户来进行验证。

该文件可以在客户端进行修改,因此我们可以将其checkout出来将第二行改为SystemAuth=no,并commitCVSNT上就可以启用单一验证方式了,注意启用单一验证方式后原来的Windows系统用户将变为无效,因此要注意执行该步骤的时机。

2 admin文件

该文件保存CVSNT管理员用户列表,内容很简单,形式如下:
User1
User2
User3
每一行定义一个管理 员用户,默认时没有该文件,但你可以在客户端自己添加并add上去,再commitCVSNT上,但是光有这个文件还是不会生效的,还要将其添加到 checklist文件中,使CVSNT能够读取该文件的内容,在checklist中添加文件列表的格式为:

 [空格]文件名 出错信息

其中文件名前的空格必须要有的,不然会出错。
我们可以先添加admin文件到CVSNT中,再修改checklist文件commit,就可以使admin文件生效了。

3passwd文件

服务器工作在CVSNT用户单一验证方式下的时候,这个文件定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名信息。默认状态下 没有该文件,但是我们可以在CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。

添加用户的命令的示例:

cvs passwd –r administrator –a cvsadmin

之后系统提示输入密码,输入后服务器会新建一个passwd文件。

该文件的内容很简单,形式如下:

cvsadmin:fqr1fS4gDghrt:administrator
kid:aTXRfS31Bm6JA
mystique:Yna4QcXz9dEqd

以第一行为例:cvsadmin为用户名,fqr1fS4gDghrtCVS使用UNIX标准加密函数对密码进行加密后的结果,administrator为该用户的别名,当使用混合验证方式时对应Windows系统用户名。

注意:这个文件是不能在客户端进行修改的,不能checkout出来。

4group文件

该文件定义CVSNT中组信息,同组里的用户拥有一样的权限,对组权限的修改和对用户权限的修改一样。

group文件的内容为

administrators:cvsadmin kid mystique
users:User1 User2 User3

可以看到该文件的内容也很简单,组名:用户名,多个用户名之间用空格隔开。

Group文件可以在客户端修改,不用修改checkoutlist这个文件,系统会自动使其生效。

作为组里面的特定成员可以赋给特定的权限。

了解了以上内容,下面我说一下我自己的配置步骤,我没有使用WinCVS进行操作,是直接使用命令行进行修改的,觉得这样思路比较清晰:

1、添加系统变量CVSROOT=E:/CVSNT/Repository,并把E:/CVSNT加入到系统Path路径。

2、进入命令提示符,因为此时为混合验证模式,可以不用不用登陆直接进行checkout。可以建立一个工作目录,在该目录下进行操作,我这里为E:/CVSNT/Works

 检出CVSROOT目录:
 
 cvs co CVSROOT

3、添加CVSNT系统管理员用户,此时会提示设置用户密码:

 cvs passwd –r administrator –a cvsadmin

4、修改CVSROOT访问权限:

 cd CVSROOT
 cvs chown cvsadmin   //
更改所有者为
cvsadmin
 cvs chacl default:n   //
默认权限为
n
 cvs chacl cvsadmin:rwc  //
添加cvsadmin

5、修改config文件,按上面的方法修改后commit

 cvs ci

6、此时单一验证方式已经启用了,也就是只能使用刚才添加的cvsadmin进行登录,此时可以把CVSNT控制面板上的Use local users for pserver authentication instead of domain users关掉。登录前还要改一下系统变量CVSROOT,关闭命令提示符窗口,修改CVSROOT为:

 :pserver:cvsadmin@192.168.0.1:4021/CVSNT/Repository

这里的192.168.0.1是服务器的IP地址,/CVSNT/Repository就是前面设置Repository时设置的Name,可以改为你机器上的配置。修改系统变量之后以下的步骤在任何与服务器相连的机器上进行,当然该机器上应该有CVSNT的可执行文件。

7、如果为了避免出现错误,先重启一下CVSNT服务器,再启动命令提示符来到E:/CVSNT/Works,因为已经启用单一验证方式,先要进行登录。

 cvs login
 
 
输入密码,此时就是以cvsadmin登录了。

 
8
、添加admin文件,首先将CVSROOT检出,在CVSROOT下新建admin文件,内容为
 
 cvsadmin
 
 
执行命令:
 
 cvs add admin
 cvs ci
 
9
、修改checklist文件,在该文件末尾添加一行:

 [空格]admin  error message
 
 
注意:admin前的空格不能少。

 
 
执行命令:
 
 cvs ci
 
经过以上步骤,可以说用户配置已经基本完成了,CVSNT可以很好的工作在单一验证方式下。进一步的管理可使用以下命令:

添加用户: cvs passwd -a username,使用时不必理会需要添加别名的提示。

修改用户权限:cvs chacl username:r|w|c|n,(rRead wwrite ccontrol nnone

要添加组管理,只需同添加admin步骤一样,按照格式要求新建group文件即可。

如果还有不清楚的可以看看自带的文档,说得还是比较详细的。

ok,差不多就是这些,有错还请各位帮忙指出,还在学习ING