CVS学习笔记

来源:百度文库 编辑:神马文学网 时间:2024/04/28 08:47:41
一、 CVS部署
总体流程:
(1)    在服务器端和客户端安装CVS软件,创建仓库;
(2)   用crypt创建用户(其中一个是管理员);
(3)   用系统用户Admin登录取出CVSRoot目录(客户端进行);
(4)   在服务器的CVSRoot中增加passwd和group文件并写入相关信息(服务器端进行);
(5)   在取出的CVSRoot中修改config文件并提交(客户端);
(6)   在服务器的CVSRoot增加.owner和.perms并修改(服务器端完成)[若为cvsnt2.5版本,则更改CVSRoot\cvs\ fileattr.xml文件,改为新的管理员名称];
(7)   用新管理员登录(客户端);
(8)   删除Admin取出来的CVSRoot目录­(客户端完成);
(9)   用新管理员登录取出CVSRoot目录,增加admin文件commit,修改checkoutlist文件并commit;
(10) 在服务器端增加history文件,[cvsnt2.5版本才要执行此步],为使用cvstracnt作准备.
(11)用新管理员创建新模块(客户端进行);
(12)  设置用户权限;
(13)  进入使用。
1.环境配置
1.1服务器端
1)、安装CVSNT,在http://61.143.38.136:8383下载CVSNT-2.0.4 或 CVSNT-2.0.51(本次安装实例是使用2.0.51版本)。安装完成后(选择Full Install,其它按照默认安装),重启(必须重启),此时右击“我的电脑——管理”,打开“计算机管理”窗口,选择“服务和应用程序——服务”,右边的服务控制器中多了2个服务:cvsnt与cvslocking,如图:

2)、安装完成后可通过在Windows控制台(cmd)中任意位置执行cvs/cvs.exe来检验是否安装成功。在开始菜单中选择“运行”,输入“cmd”,在弹出的命令提示窗中输入CVS或CVS.exe,出现以下界面就表示安装成功。

3)、在开始菜单中把“Service Control Panel”发送到桌面。不发送也可以。
1.2客户端
在客户端直接安装TortoiseCVS即可。
1.3创建CVSNT仓库
服务器端与客户端的安装完成后,就可创建CVSNT仓库。步骤如下:
1)、运行“Service Control Panel”,在Service Status页面,确认2个服务(cvsnt与cvslocking)正常和稳定运行。
2)、选择Repository页面,如下图:

3)、单击“Add”添加要创建仓库的路径,如图:

Location:创建仓库的路径。
4)、选择Advanced页面,勾上【Use local users for pserver authentication instead of domain users】(这是让CVSNT使用本地账户作为pserver认证方式),在Temporary栏选择存放临时文件(cookies)的文件夹,确认。

5)、创建完成后,在【F:\CVStest】下面自动创建了【CVSROOT】目录,这是CVS默认的管理目录(默认模块),仓库创建成功。如果报错,那是系统Path路径未设置正确。
2.  创建用户
CVS通过Crypt来创建和编辑用户。
注释: crypt是个密码加密函数,它是基于Data Encryption Standard(DES)演算法。crypt基本上是One way encryption,因此它只适用于密码的使用,不适合于资料加密。
2.1新增用户(其中一个是管理员):
1)、在开始菜单选择“运行”,输入“cmd”,在弹出的窗口中输入“cd(dos命令)  F:\crypt(crypt存放的路径)”按回车键;
2)、然后再输入“F:”按回车;
3)、开始创建用户,输入“crypt(命令) user_A(用户名) abc123(用户密码)”按回车,系统自动生成一个加密的暗码。如图:

4)、将创建的用户信息及产生的暗码按“用户名:暗码:用户密码”“用户名:暗码:NT上创建的新用户组:用户密码”的顺序记录下来(便于在以后的passwd文件中使用)。
按以上方法继续创建所需的用户。
2.2修改用户
步骤如下:
前两步跟新增用户相同;若要修改密码,直接改密码即可,如修改用户user_A的密码“crypt user_A 234”回车即可;若要修改用户名,其实是删除用户user_A后再新增用户user_B 。
同样的,修改后也要把相关的信息(用户名:暗码:用户密码)记录下来(同时在passwd文件中作相应的修改)。
2.3删除用户
1)、利用windows自带的搜索功能搜索出所有passwd和group文件;
2)、将该用户在passwd,group文件中存放的用户和密码字符串逐一删除。
3.  用系统用户Administrator登录取出CVSRoot目录(客户端进行)
4.  设置passwd,group文件
1)、在cvsroot文件夹中增加passwd,group两个文件;
2)、将已建立的用户与密码信息,写入在passwd中,按“用户名:暗码:NT上创建的新用户组:用户密码”的顺序输入。
3)、group的作用是分组,为更好地设置权限,有相同权限的用户可以放在同一组,如开发人员可能同一组,项目经理为一组,管理员为一组。录入的方式为“组名:用户名1 用户名2 用户名3…”,每行为一组.若不要组名,只写用户名,则表示没有对用户进行分组。(不建议这样去做,因为这样做会导致在设置权限时出现混乱,不便于管理,特别是用户多的时候。)
写入后保存,设置成功。
5.  权限配置
4.1 CVS中目录权限介绍
系统支持的目录权限列表:
r  (读取权限)     c (创建和删除权限)
w  (写入权限)     n (没有任何权限)
- 默认情况下,任何用户都拥有任何目录的所有权限。
- 任何情况下只有目录的拥有者和Administrator才有权力更改目录的使用权限。
4.2权限设置
举例说明(部署流程)
【『例子』:企信通运营产品cvs库】
库权限需求说明
1)        【企信通运营产品】是项目名称;
2)        在项目名称为根目录,且根目录下有三大子目录:01开发库、02基线库、03产品库;
3)        只有开发库是向开发人员公开的;
4)        在开发库目录下有四个子目录:00个人代码、01整合代码、02工程文档、03管理文档;
5)        “00个人代码”目录是开放给个人,其下有以项目组成员名字的子目录,如:朱军、王继伟、何晓明,只有本人和项目经理有权访问;
6)        “01整合代码”是只有项目经理才能访问的库,里面是从项目成员目录中获取的代码的整合代码;
7)       “02工程文档”是整个开发生命周期产生的所有技术性文档,,如:需求说明书、详细设计说明书、测试用例等,对所有项目组人员开放;
8)        “03管理文档”是整个项目过程中所有的管理性文档,对所有项目成员开放,
9)        “00项目管理”目录,放置项目管理过程中的文档、如:项目规划、软件开发计划、周计划、项目进度跟踪控制表等;
10)    “01需求与设计”,放置需求管理和设计管理过程的所有文档,如:需求评审报告、需求变更申请、需求变更控制报告、详细设计评审报告等;
11)     “02测试管理”放置测试管理过程中所有的管理文档,如:测试计划、系统评审报告、测试报告等;
12)    基线库和产品库是配置管理员负责维护。
人员角色
人员姓名
角色
王继伟
项目经理
朱军
程序员
何晓明
程序员
设置权限步骤如下:
1)、在服务器建库,仓库物理路径D:\ 企信通运营产品;
2)、用crypt创建用户yuhuan(管理员)、jiwei_wang(项目经理)、zhujun、xiaoming_he。方法如上所述。
3)、在cvsroot目录中新建【admin】、【group】、【passwd】。
A、在admin文件上设置(写入)管理员的帐号信息(管理员的用户名),如:yuhuan。(目的只是为了方便管理和指定管理员,将所有的管理员统一存放,更便于管理)
B、在group建立用户组,分为CN(开发人员)、MN(项目经理)、AN(管理员)三组。
C、将已建立的用户与密码信息,写入在passwd中。
4)、用管理员帐号(如yuhuan),在cvs客户端(已安装WinCVS/TortoiseCVS的)新建模块:【01开发库】、【02基线库】、【03产品库】,按照上面的需求在所在模块中建立其他的工作目录(注:一般在新创建的每个工作目录时,都会在每个工作目录用UltraEdit创建或拷贝一个Readme.txt作为引子文件放于仓库{新建模块时利用cvs添加,cvs提交功能提交到仓库中}。目的是为了用户使用cvs取出工作目录时,目录不为空;如果目录为空可能会出现错误),分别添加,提交。
5)、分配用户权限,在服务器端完成。步骤如下:(权限有继承性,下一级工作目录跟上一级目录的权限相同,若要不同则修改.perms文件的内容即可)
在上一步创建新模块后,系统会在每个工作目录下生成一个.perms文件(若有些目录未生成,可在已生成此文件的目录将此文件复制过去。),
A、在D:\ 企信通运营产品\下将.perms文件的内容改为 :(管理员有全部权限,默认没有权限);
AN:rwc
CN:rwc
MN:rwc
Defult:n
B、在D:\ 企信通运营产品\开发库\下将.perms文件的内容改为:(管理员、项目经理和开发人员有全部权限,默认没有权限);
AN:rwc
CN:rwc
MN:rwc
Defult:n
D:\ 企信通运营产品\基线库\和D:\ 企信通运营产品\产品库\下删除.perms文件文件,此工作目录的权限跟上一级(企信通运营产品)的权限相同,因此可以直接删除.perms文件;
D、在D:\ 企信通运营产品\开发库\个人代码\下删除.perms文件文件,此工作目录的权限跟上一级(开发库)的权限相同,因此可以直接删除.perms文件;
E、在D:\ 企信通运营产品\整合代码\和D:\ 企信通运营产品\工程文档\以及 D:\ 企信通运营产品\管理文档\下将.perms文件的内容改为:(管理员和项目经理有全部权限,开发人员只有读的权限,默认没有权限)
AN:rwc
CN:r
MN:rwc
Defult:n
F、在D:\ 企信通运营产品\个人代码\王继伟\下将.perms文件的内容改为:(只有本人和管理员有全部权限,项目经理可以看,默认没有任何权限)
Jiwei_wang:rwc
AN:rwc
MN:r
Defult:n
G、同理在其他开发人员工作目录下将.perms文件的内容改为以上的内容,只是将相应的程序员用户名改掉就行了。
6)、权限分配完成后就可进入使用了。流程:取出工作目录,修改后用“CVS添加和CVS提交”即可。如在已安装TortoiseCVS的客户端,使用用户jiwei_wang将其工作目录(开发库中的整合文档、工程文档、管理文档及个人代码下王继伟目录的所有内容)取出,即可使用。
6. 备份
备份流程:创建备份任务——添加任务计划
5.1创建备份任务
在服务器上创建备份任务,用UltraEdit创建一个txt文件,内容如下:
rar  a  –r  –v650m  -agYYYYMMDD  P:\test  D:\企信通运营产品
各项的意思如下:
a.(备份后的文件格式)    b.(压缩)
c.(连下级子目录一起压缩)
d.(文件的大小)         e. (备份文件名中包含年月日)
f.(备份的源文件:备份D盘下的“企信通运营产品”文件夹)
g.(备份文件存放的路径:P盘下名为test20060803.rar文件)
按需求输入以上内容后保存(如文件名为testData)。
5.2添加任务计划
进入控制面板——任务计划,双击“添加任务计划”,根据向导进行,进入向导的第二步时,需选择上一步创建的备份任务文件(testData)。在此向导可设定执行备份任务的时间,周期等内容。
添加成功即可。
二、  维护工作
1.  数据迁移
如果服务器出现问题或由于其它原因需要换另一台服务器,那么必须将原来的数据迁移到新的服务器中,操作步骤如下:
1)   在新服务器中重新部署CVSNT环境(安装—创建仓库[与原服务器的仓库同名,路径也最好一样,以保证用户使用时不会出现找不到仓库的错误,如:D:\meip2.6]),此时系统在D:\meip2.6自动生成CVSRoot文件夹。
2)   将最新的备份文件解压,然后在解压出来的文件夹meip2.6下将的所有工作目录(包括CVSRoot)移到新服务器创建的新仓库(D:\meip2.6)下;
3)   最后在解压出来的文件夹meip2.6\CVSRoot下的“passwd”、“group”、“.perms”文件移到新服务器创建的新仓库(D:\meip2.6)下;
完成以上三步操作后即完成了数据的迁移工作。
2.关库
当仓库的数据不再用到,就可将该仓库关闭。步骤如下:
1)  运行“Server Control Panel”,切换到“Repositories”页面,在“Valid Repository Roots”中选择要删除的仓库,然后点击“Delete”。
2)  将仓库的数据备份(一般都要做备份,以免日后要使用);
3)  备份完成后,考虑到硬盘的空间可将原文件从计算机中删除。
3.开库
所谓开库是指将已关的仓库再次使用起来。有两种情况:
1)  一种是原仓库已删除但在关库时已备份,这种情况的开库步骤跟数据迁移是一样的。
2)  另一种是原仓库未删除,这种情况的操作更简单,只要运行“Server Control Panel”,切换到“Repositories”页面,点击“Add”,在弹出的对话框中选择原仓库所在的路径,确定,开库成功。
三、       总结(以下部分属摘抄)
CVS服务器配置:
1. 安装cvsnt for windows版安装程序。
2. 设置PATH到cvs.exe目录,这很重要。
3. 设置CVS仓库,在控制面板中,打开CVS for NT,在Repositories页面,建立仓库。
4.在操作系统共享仓库文件夹,且设置可写权限。
5. 建立用户,CVS没有独立用户管理,采用操作系统用户权限,直接建立操作系统用户就可以。
CVS客户端的配置 :
1. 安装TortoiseCVS客户端程序。
2. CVS登录协议:pserver 服务器:10.212.195.10 端口:(默认端口可不用填写)仓库文件夹:/cvsroot 用户名:user1 模块:FooBar (可以通过“获取列表”,获得所以模块的名称的选择列表)
3.安装文件冲突比较工具,建议使用WinMerge
TortoiseCVS使用技巧
1. CVS创建新模块――在CVS目录中创建个目录,目录下的内容并不会自动加入到CVS仓库中,需要通过添加内容加入到CVS仓库中。
2. CVS添加内容――获取当前目录下(包括子目录)的文件/文件夹,添加完成后,需要进行提交操作(在目录操作,该目录下所以子目录及文件会批量提交)。
3. CVS提交――所有需要更新CVS仓库的命令都需要提交确认。
4. CVS更新――获取当前目录下(包括子目录)的最新版本,如果有冲突会保留本地版本。
5. 解决冲突――在WinMerge右侧窗体中进行文件合并编辑。冲突解决后提交到CVS。
6. 从CVS中获取历史版本,在打开文件的历史窗口,选中要恢复的历史版本,点击“保存此版本为”按钮,然后双击本地的同名文件,历史版本获取到本地,如果想更新到CVS中,进行提交操作。
7. CVS文件夹刷新――文件夹状态不自动刷新,需要手工刷新。
8. CVS删除文件――选中要删除的文件,点击CVS删除,然后要在该文件的父文件夹上进行提交操作。(删除操作也会遇到冲突问题,避免方法在删除文件前先进行版本同步)。
9. CVS的Lock/Unlock状态监视器――在创建模块的时候,勾选中选项菜单中的按只读方式取出文件,监视启动后,取出或者更新正在编辑的文件都将被创建为只读的。
10. CVS编辑――获得文件的写权限。(注意,在创建模块时没有开启Lock/Unlock状态监视器则更改编辑状态作用不明显)。选择 CVS编辑 菜单,这个菜单会由于文本文件或者二进制文件而稍微不同。对于二进制文件,例如DOC,TCVS完成更新操作并且检测是否有别的用户也在编辑它。如果有,那么你将不能编辑它,如果是文本文件例如.TXT/.CPP,即使有人在编辑,TCVS仍然允许你编辑它。
11. CVS取消编辑状态――是否想回复原有版本,这将丢失你所作的修改。(注意,在创建模块时没有开启Lock/Unlock状态监视器则更改编辑状态作用不明显)。
12. 标签――标签一般都是用在整个模块,以便将来这个模块的当前状态可以回溯。当标签名称输入之后,点击 确定,不像其他CVS操作,TAG标签立即在仓库生效,不需要再 提交。
13. 分支――分支包括(创建分支,获取分支,合并分支)。在一个软件项目周期中,分支是一个很有用的修改控制。例如,如果你已经推出了你的软件的第一个版本1.0,现在你已经在下一个版本2.0增加新功能。此时你的第一个版本发现了BUG,你的新版本的源代码正在开发阶段,推出稳定版本至少需要一个月的时间,因此无法基于最新版本推出一个修正原有BUG的版本。创建分支和获取分支和标签操作类似(注意,合并分支在提交后才会更新到CVS仓库中)。
14. CVS批注――如果一个项目突然被中断了,准确找出谁是这个错误修改的责任人是非常重要的,这就是CVS注释的用途。在文件的每一行,对话框显示,每一行的修改原因涉及版本,本行的作者,修改时间日期,本行的当前内容。
---------------------------------------
TCVS和Visual Source Safe™ (VSS) 很多地方不同. 最明显得一点是TCVS不需要锁定正在处理的文件,而VSS默认锁定t.实际上, CVS 文档鼓励用户不使用文件锁定. 几个用户同时修改同一个文件的可能性是很小的, CVS 可以正常的合并他们的冲突. 如果两个或几个人修改了文件的相同行, TortoiseCVS 将包括冲突, 在文件中插入指示, 让开发员决定如何解决. 这种冲突非常稀少, 通常只是出现在缺少沟通的情况下导致如此结果 (例如两个人试图解决同一个问题). 另外一个重要的不同,VSS 是显示服务器视图, TortoiseCVS显示客户端视图. 从实际上来说, 不像 VSS, TortoiseCVS不会主动通知你仓库的变化,除非你自己进行更新, 或者询问一些文件的状态. TortoiseCVS包括的修改状态只是反应你最后一个取出、更新、提交之后的修改。