WinCVS与CVSNT使用手记
参考资料:
1. WinCVS与CVSNT简明使用手则(一)
http://www.dingl.com/view.shtml?xh=211
WinCVS与CVSNT简明使用手则(二)
http://www.dingl.com/view.shtml?xh=212
根据这篇文章,使用cvsnt在WINXP上成功架设了CVS服务器.并用WinCVS完成了CVS的一些基本操作.
2. WinCVS操作手册.pdf
大小:2,991,880字节
WinCVS不错的入门手册
下载地址:
http://61.172.250.46/yang/private/blog/wincvs_manual.rar
3. CVS快速入门.pdf
大小:1,724,983字节
虽然介绍的很浅,但提到的几个知识点都介绍的很详细.
下载地址:
http://61.172.250.46/yang/private/blog/cvs_quick_intro.rar
1. CVS服务端安装
CVSNT 2.0.41a(sunwang:2.0.51d最稳定)
CVS客户端安装
Python 2.3.4(sunwang:2.3.5最稳定)
WinCvs13b17(sunwang:13b17-2最稳定)
2. CVS服务端和CVS客户端需要建立的若干工作目录
CVS服务端:
1. F:/KHRoot (存放自己源代码的根目录)
2. F:/KHTemp (存放CVS出错信息的目录)
CVS客户端:
1. E:/CVSClient/Admin (管理员工作目录,还可以有多个工作目录)
2. E:/CVSTemp (WinCVS临时目录)
3. CVS服务端的设置
1. 设置两个目录
2. 复选框"Use local users for pserver ..."要选上
4. CVS客户端的设置
1. 设置CVSROOT(关键)
:pserver:administrator@server:F:/KHRoot
CVSRoot字符串由如下几项组成:
Authentication: 验证方式,默认为pserver
Path: CVS服务器上仓库的路径.一个CVS服务器上可以有多个仓库.用仓库的路径来标识不同的仓库.
Host address: CVS服务器的IP地址或者域名
User name 用户名,冒号后可以跟密码
2. 设置WinCVS临时目录"HOME"
E:/CVSTemp
3. 设置管理员的工作目录
E:/CVSClient/Admin
可以有多个工作目录来存放功能不同的modules,使用工具栏上的"change location"按键,进行设定.
Checkout的module作为工作目录的下一级子目录.
4. 设置WinCVS外挂编辑器
5. CVS中目录的权限:
1. 系统支持的目录权限列表:
r 读取权限
w 写入权限
c 创建和删除权限
n 没有任何权限
2. 默认情况下,任何用户都拥有任何目录的所有权限.
所以管理员在为某个用户建立了新的工作目录之后,要立刻手工设置这个目录的权限.
6. 管理员的任务和相应操作:
1. 修改默认模块(CVSRoot管理模块)的权限,只让administrator拥有rcw三种全部权限.
1. Checkout默认模块(CVSRoot管理模块)
2. 对[CVSRoot]模块执行下列CVS命令:
cvs chacl default:n 取消所有用户的默认权限
cvs chacl administrator:rcw 设置administrator拥有所有权限
cvs chown administrator 更改[CVSRoot]的拥有者
cvs lsacl 查看[CVSRoot]的权限状态
2. 为普通用户建立工作目录
1. 修改[CVSRoot]模块下的modules文件,一个用户一个模块
2. modules文件的编写方法
[模块1的描述][参数][相对目录路径1]
[模块2的描述][参数][相对目录路径2]
...
[模块n的描述][参数][相对目录路径n]
如:
CVSRoot CVSRoot
Jackey工作目录 -a Jackey
_DOCenter _DOCenter
WinCVS在Checkout时能自动列出这个文件中所列出的modules.
如果不在这个文件中列出module,就只能手工在WinCVS中输入module的名称.
3. commit modules文件
4. 上传工作目录
在E:/CVSClient/Admin下建立每个用户的工作目录
然后将这些工作目录Import
最后将本地这些工作目录删除
5. 为每个用户分别设置各自目录的访问权限,只有自己才能访问自己的工作目录
1. Checkout每个用户的工作目录到[Admin]目录下.
2. 选中某个用户的工作目录之后,执行下列CVS命令:
cvs chacl default:n 取消所有用户的默认权限
cvs chacl 用户名:rcw 设置指定用户拥有所有权限
cvs lsacl 查看指定用户工作目录的权限状态
3. 添加和删除用户:
直接执行下列CVS命令:
cvs passwd -a Killer 添加新用户[Killer]
cvs passwd -r Jackey Killer 绑定[Killer]到NT用户[Jackey]
cvs passwd -X Killer 删除用户[Killer]
7. CVSNT系统中用户管理原则:
1. CVSNT的用户和CVSNT所在机器上的NT用户是相关联的.
2. 只有administrator身份的用户,才有权在CVSNT中创建和删除用户.
3. 创建新的CVS用户,必须与CVSNT所在机器上的NT用户绑定
4. 一个NT用户可以和多个CVS用户绑定
8. 一般CVS用户在WinCVS中的操作:
1. 登录CVS服务器
菜单Admin->Login...
2. 登出CVS服务器
菜单Admin->Logout
3. Import module的操作
1. Import指定的目录成为一个CVS module:
需要Import的module其实就是一个包含项目所有文件的目录,比如目录_DOCenter
将工作目录设定到module的父目录,比如目录Yang2003
然后在左侧的[Workspace]栏中右击需要Import的module名(目录名_DOCenter),选快捷菜单中的Import module...
根据向导完成余下的工作.
2. Checkout刚才Import的module,设置权限:
Import之后,可以把本地的目录_DOCenter删除
然后在左侧的[Workspace]栏中右击工作目录Yang2003,选快捷菜单中的Checkout module...
输入module名_DOCenter后按"确定"按键,就可以把刚Import的module _DOCenter Checkout到工作目录Yang2003下.
选中左侧的[Workspace]栏中的_DOCenter,按快捷键[CTRL+L],顺序执行如下CVS命令,以设置权限:
cvs chacl default:n
cvs chacl yang:rcw
cvs chown yang
cvs lsacl
3. Checkout一个module中指定目录的方法
在左侧的[Workspace]栏中右击工作目录Yang2003,选快捷菜单中的Checkout module...
输入module名J2ME_PRJ/CIAYhb,
选中复选框Check out into directory,并在右侧的输入框中输入CIAYhb
(如果选中下方的复选框Don't shorten module path,那么Checkout时创建的CIAYhb目录中仍然会有 J2ME_PRJ/CIAYhb的路径)
最后后按"确定"按键,就可以在工作目录Yang2003下Checkout module J2ME_PRJ中的CIAYhb目录,而不是整个module J2ME_PRJ.
4. WinCVS的Update settings对话框中各复选框的含义
1. Checkout file to standard output
检出文件到标准输出
2. Do not recurse into sub-folders
不递归子目录,只update当前目录下的文件
3. Reset any sticky date/tag/'-k' options
重置所有的粘贴性的日期/标示/-k选项
删除分支/标签,取得最新的版本,用于从分支切换会主干
4. Create missing directories that exist in the repository
创建在仓库丢失的目录
5. Get the clean copy
获得干净的拷贝,本地文件修改错误时,可以把服务器上的文件取回覆盖本地文件(用于本地文件修改错误的情况).
5. 在某个module中添加一个目录或文件
菜单[Modify]中的[Add selection]用来添加目录和文本文件
[Add binary]用来添加二进制文件
添加文件之后还要做一次commit操作,整个添加操作才算完成.
添加目录不需要commit操作
6. 从CVS服务器取回某个程序的某个版本的操作
在Update settings对话框的Update options选项卡中
选中Retrieve rev./tag/brain复选框,并在后面的组合框中输入某个以前的版本号.
7. 获得CVS服务器上的模块列表的两种方法:
这两种方法都不依赖CVS服务器上CVSRoot目录下的modules文件,
modules文件中没有登记的module也能列出.
1. 菜单[Admin]->[Admin macros]->[Browse Repository Folders...]
在对话框Browse Repository Folders中输入CVSROOT:
:pserver:test@server:E:/CVSRoot
(不需要输密码,不需要使用administrator用户)
选中一个module目录后,按"Checkout..."按键,就能导出指定的module.
2. 菜单[Admin]->[Admin macros]->[List Module Contents]
在对话框Title中输入CVSROOT:
:pserver:test:test@server:E:/CVSRoot
(必须输入密码,不需要使用administrator用户)
8. 固定版本
commit文件到一个指定的版本
在对话框Commit settings的Commit options选项卡中,
选中"Force revision/branch"复选框,并在后面的组合框中输入一个版本号.
对应的CVS命令:cvs commit -m 测试固定版本到1.5 -r 1.5 新增的文件.doc (in directory F:/Yang2003/_DOCenter/工具软件/)
9. 跟踪谁在编辑文件
如果一个module是以read-only的方式Checkout,那么在编辑某个文件之前,就必须告诉CVS服务器要编辑的文件.
这么做的好处是,其它开发人员能跟踪到谁正在编辑相应的文件.
开始编辑
选中要编辑的文件
点菜单[Trace]->[Edit Selection]
指定的文件被WinCVS解除只读状态,并设为编辑状态.
编辑完成
commit指定的文件
文件被WinCVS设为只读状态
放弃编辑
选中指定的文件
点菜单[Trace]->[Unlock selection]
查看正在对指定文件进行编辑的人
选中指定的文件
点菜单[Trace]->[Editors]
10. 对一个或多个文件或目录标记标签(tag)
标记的标签可作为修订版的参照
一个特例:对整个模块标记标签是为了将来能够重新构造模块的当前状态.
标记标签的时机:在工程发行或开始重大修改之前
具体操作:
1. 选择需要标记标签的目录或文件.
2. 点菜单[Modify]->[Create a tag on selection...]
3. 在New tag name输入框中输入标签名
标签的命名规则:
必须以字母开头,后面跟多个字母,数字,减号和下划线.不能跟点号或空格.
两个保留标签名,"HEAD"指在库中最新可用的版本,"BASE"指最后Checkout到本地的修订版.
11. 察看文件的tag和revision状态
选择文件快捷菜单中的[Status selection]
12. 删除文件或目录
删除文件
1. 选中一个文件
2. 点菜单[Modify]->[Remove]
3. Commit这个文件,这个文件在本地被物理删除,在CVS服务器上被标记为"被删除"(而非物理删除)
Checkout模块早期的修订版,仍可以恢复出删除的文件
删除空目录
1. 在左侧的[WorkSpace]框中,选择要删除的空目录的父目录.
2. 选择右键快捷菜单中的"Update selection"
3. 在对话框"Update settings"的"Globals"选项卡中选中复选框"Prune empty directories"
4. 按确定键
13. Branch(分支)
1. 创建分支
1. 选中目录或文件
2. 菜单[Modify]->[Create a branch...]
3. 在"New branch"组合框中输入分支名.(分支名的命名规则和标签名一致)
4. 选中复选框"Check that the files are unmodified before tagging"/
5. 按"确定"键
2. 切换至分支(可以是多个分支中的任何一个)
1. 选择目录或文件
2. 菜单[Modify]->[Update selection...]
3. 选中复选框"Create missing directories that exist in the repository"
4. 切换到选项卡"Update options"
5. 选中复选框"Retrieve rev./tag/branch",并在复选框右侧的组合框中输入分支名
6. 点"确定"键
3. 切换至主干
1. 选择目录或文件
2. 菜单[Modify]->[Update selection...]
3. 选中复选框"Create missing directories that exist in the repository"
4. 选中复选框"Reset any sticky date/tag/'-k' options"
5. 点"确定"键
4. 合并,把对分支文件的修改合并到主干的文件上,或反之.
1. 切换至主干
2. 选择目录或文件
3. 菜单[Modify]->[Update selection...]
4. 选中复选框"Create missing directories that exist in the repository"
5. 切换到选项卡"Merge options"
6. 选中复选框"Only this rev./tag",并在下方复选框中输入"分支名"
7. 点"确定"键.
9. CVS术语
1. Repository 仓库;CVS服务器的根目录.模块(Module)的集合.
2. Module 模块;CVS服务器根目录下的第一级子目录.通常用于存放一个项目的所有文件.
3. Checkout 检出;通常指将仓库中的一整个模块首次导出到本地.
4. Import 导入;通常指提交整个目录结构并创建一个新的模块.
5. Release 发行版本;整个产品的版本.
6. Revision 修订版;单个文件的版本.(版本号总是偶数个数字)
7. Tag 标签;在一个开发的特定期对一个文件集指定的符号名.用来标定特定信息.
8. Update 更新;从模块中下载其他人修改过的文件,更新本地的拷贝.
9. Commit 提交;将自己修改过的文件提交到模块中.
10. Branch 分支;一条分离的开发线,用于隔离修改.(分支的版本号总是奇数个数字)