WinCVS与CVSNT简明使用手则

WinCVS与CVSNT简明使用手则

Posted at September 23, 2005 01:41 AM in CMS .

CVS是版本控制的利器,目前在Linux和Windows下都有不同版本;但是国内大多数应用介绍都是基于Linux等开放源代码的开放性软件组织,而且讲解的也不系统,让人摸不着头脑;Windows下的CVS使用介绍更是了了无几。
本文是针对Windows的LAN环境下使用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

1、前言:

CVS是版本控制的利器,目前在Linux和Windows下都有不同版本;但是国内大多数应用介绍都是基于Linux等开放源代码的开放性软件组织,而且讲解的也不系统,让人摸不着头脑;Windows下的CVS使用介绍更是了了无几。
本文是针对Windows的LAN环境下使用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.6和2.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. 硬盘分区格式:FAT32与NTFS都可以。
6. 准备2个CVSNT的工作目录:
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这个目录,确认,OK,Yes,这时会在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. 硬盘分区格式:FAT32与NTFS都可以。

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需要管理 Jackey,Goury,Riolee三个用户,分别为这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打开进行编辑。
◇ 为Jackey,Goury,Riolee三个用户分配工作目录和完成其它模块描述。
CVSRoot CVSRoot
Jackey工作目录 -a Jackey
Goury工作目录 -a Goury
Riolee工作目录 -a Riolee
◇ 编辑完毕,存盘。回到WinCVS,选中modules这个文件【Ctlr+M】或右键选择【Commit selection…】,默认设置,【确认】,OK,完成上传。

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

◇ 在YCW2000机器上的E:/CVSClient/Admin分别建立三个目录分别名为:Jackey,Goury,Riolee,作为临时交换目录。
◇ 在新创建的每个目录中用UltraEdit或拷贝一个Readme.txt作为引子文件!!:)
◇ 然后,回到WinCVS,在【Workspace】栏的【Admin】目录下形成如下的目录结构:
◇ 分别选中Goury,Jackey,Riolee,右键,点按【Import Module】,选择【Continue】,其它全部使用默认值,【确定】,OK,完成上传工作。
◇ 仔细观察【Output】窗口,确认都成功上传了。
◇ 转移到系统的Explore程序中,删除E:/CVSClient/Admin目录下的Jackey,Goury,Riolee三个目录。然后回到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当中还有很多高级的用法,以及上百个命令,还有很多新鲜的管理源代码的方法,比如:tag,branch等模式;因此,热烈欢迎大家积极探索,不断共享,不断进步。。。。。。。。
3. 另外,cvs.html这个帮助,里面的信息也很丰富,但是,很多地方写得不够清楚,需要不断猜测和实践才能知道怎么回事,本文的很多经验都是看这个帮助,如此这般,采用这个笨办法得到的。。。。。。
4. 最后,祝愿看到此文的人,得到的帮助、提高等好处大于或等于浪费的时间、反而退步等坏处!!

Appendix:
CVS的主命令集合:(每个主命令下面还有子命令,这里没有列出来)
CVS commands are:
add Add a new file/directory to the repository
admin Administration front end for rcs
annotate Show last revision where each line was modified
chacl Change the Access Control List for a directory
checkout Checkout sources for editing
chown Change the owner of a directory
commit Check files into the repository
diff Show differences between revisions
edit Get ready to edit a watched file
editors See who is editing a watched file
export Export sources from CVS, similar to checkout
history Show repository access history
import Import sources into CVS, using vendor branches
init Create a CVS repository if it doesn't exist
info Display information about supported protocols
log Print out history information for files
login Prompt for password for authenticating server
logout Removes entry in .cvspass for remote repository
ls List files in the repository
lsacl List the directories Access Control List
passwd Set the user's password (Admin: Administer users)
authserver Authentication server mode
rannotate Show last revision where each line of module was modified
rdiff Create 'patch' format diffs between releases
release Indicate that a Module is no longer in use
remove Remove an entry from the repository
rlog Print out history information for a module
rtag Add a symbolic tag to a module
server Server mode
status Display status information on checked out files
tag Add a symbolic tag to checked out version of files
unedit Undo an edit command
update Bring work tree in sync with repository
version Show current CVS version(s)
watch Set watches
watchers See who is watching a file
==================================================
[转贴]WinCVS与CVSNT使用手记
==================================================
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 分支;一条分离的开发线,用于隔离修改.(分支的版本号总是奇数个数字)

转自:http://cs.cuc.edu.cn/linweiguo/archives/000045.html

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值