﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-红花园-文章分类-其它</title><link>http://www.blogjava.net/greg/category/24469.html</link><description>红花园</description><language>zh-cn</language><lastBuildDate>Tue, 31 Jul 2007 11:01:58 GMT</lastBuildDate><pubDate>Tue, 31 Jul 2007 11:01:58 GMT</pubDate><ttl>60</ttl><item><title>WinCVS与CVSNT简明使用手则 </title><link>http://www.blogjava.net/greg/articles/132968.html</link><dc:creator>帝国佣兵</dc:creator><author>帝国佣兵</author><pubDate>Sat, 28 Jul 2007 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/greg/articles/132968.html</guid><wfw:comment>http://www.blogjava.net/greg/comments/132968.html</wfw:comment><comments>http://www.blogjava.net/greg/articles/132968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/greg/comments/commentRss/132968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/greg/services/trackbacks/132968.html</trackback:ping><description><![CDATA[<p><span class=14><strong>1、前言：</strong></span><br><br>CVS是版本控制的利器，目前在Linux和Windows下都有不同版本；但是国内大多数应用介绍都是基于Linux等开放源代码的开放性软件组织，而且讲解的也不系统，让人摸不着头脑；Windows下的CVS使用介绍更是了了无几。 <br>本文是针对Windows的LAN环境下使用CVS的经验介绍，一步一步的向您介绍如何配置和使用CVS的服务器端和客户端。同时，本文只使用到了CVS当中最基本的东西，还有很多更为高级的东西，本文暂不涉及。下面是本文的另一个连接映射，欢迎大家讨论使用，共同进步。 <br>文章连接http://www.kuihua.net/book/list.asp?id=66 <br>论坛连接http://www.kuihua.net/bbs/dispbbs.asp?boardID=1&amp;;RootID=670&amp;ID=670 </p>
<p><strong><span class=14>2、安装版本：</span></strong><br><br><span class=14>2.1、服务器端(CVSNT)</span> </p>
<p>1. 本文使用的是CVSNT-2.0.4，这是一个比较稳定的版本，不要使用最新的CVSNT-2.1.1，本人在使用中发现有比较严重的Bug。 <br>2. 下载连接http://www.cvsnt.org 目前，它提供2.0.6和2.1.1版本的下载。 <br>3. 上面连接还提供源代码，有兴趣的朋友还可以下载下来仔细研究：）。 <br>4. 有心的朋友，仔细观察就会发现http://www.cvsnt.org 并没有提供任何客户端的下载，那是因为CVS.exe既可以用于服务器端又可以用于客户端，WinCVS是为了客户端使用的方便而定制的外壳。（关于这一点，本人未得到任何证实，只是本人在使用过程中的一种体会，欢迎大家讨论。） </p>
<p class=14>2.2、客户端(WinCVS) </p>
<p>1. 本文使用的是WinCVS-1.3b13，这应该是一个最新版本：），本人在使用过程中并没有发现有任何严重的Bug。 <br>2. 下载连接http://sourceforge.net/projects/cvsgui/ <br>3. 此网站还提供丰富的CVS文档和相关源代码，以及多个OS下面的相关文档和代码；有收藏癖的朋友有福了：）。 <br>4. WinCVS-1.3b13 使用的CVSNT的版本是CVSNT-2.0.2，在与服务器端的CVSNT-2.0.4 版本配合使用时，未发现任何不兼容或冲突现象。 <br>5. 在本人的系统中用cvs version命令显示的结果如下： <br>Client: Concurrent Versions System (CVSNT) 2.0.2 (client/server) <br>Server: Concurrent Versions System (CVSNT) 2.0.4 (client/server) </p>
<p class=14><strong>3、服务器端(CVSNT)的安装与配置：</strong> </p>
<p class=14>3.1、服务器端机器和环境配置： </p>
<p>1. 操作系统：Windows 2000 Professional SP2中文版 <br>2. 机器名称：Server <br>3. 机器地址：192.168.0.6 (内部IP) <br>4. 网络环境：100兆交换局域网 <br>5. 硬盘分区格式：FAT32与NTFS都可以。 <br>6. 准备2个CVSNT的工作目录： <br>F:\KHRoot (存放自己源代码的根目录) <br>F:\KHTemp (存放CVS出错信息的目录) <br>7. 本机上存在有的用户列表：（由NT或本机的使用者创建） <br>Administrator (系统管理员) <br>Jackey (普通用户) <br>Goury (普通用户) <br>Riolee (普通用户) </p>
<p class=14>3.2、安装CVSNT： </p>
<p>1. 下载CVSNT-2.0.4；使用administrator登陆到Server机器上。 <br>2. 双击自解压的exe文件，选择Full Install，其它按照默认方式安装；安装完毕后可以在服务控制器中发现多了2个服务：cvsnt与cvslocking <br>3. 发送Service Control Panel到桌面，形成快捷方式。 <br>4. 安装程序会自动将CVS安装路径，设置到系统的Path环境变量当中，因此使用者可以在控制台(cmd)中任意位置执行cvs.exe，这一点对下面的配置很重要！！ </p>
<p class=14>3.3、配置CVSNT服务器： </p>
<p>1. 双击Service Control Panel快捷方式，在Service Status页面，确认2个服务正常和稳定运行。 <br>2. 选择Repository页面，点按Add按钮，选择已经准备好的F:\KHRoot这个目录，确认，OK，Yes，这时会在F:\KHRoot下面建立CVSRoot目录，这是CVS默认的管理目录（默认模块）。如果报错，那是系统Path路径未设置正确。 <br>3. 选择Advanced页面，勾上Use local users for pserver ...，（Why? I don&#8217;t know!J）,在Temporary栏选择已经准备好的F:\KHTemp，确认，OK。 <br>4. 点按【应用】按钮，确认，退出，OK，搞定！！ </p>
<p><span class=14>3.4、小结：</span><br><br>1. 至此，CVSNT服务器端基本配置完毕，下面进行WinCVS的使用和管理。 <br>2. 由于CVS支持远程管理，也就是客户端与服务器集成的特性，因此，我们将添加用户、权限控制、模块维护等所有的管理工作都放到远端(WinCVS)进行管理，服务器端这时可以Ctrl+Atl+Del进入锁定状态了，下面的所有工作都交给远端的WinCVS来进行管理。 </p>
<p><span class=14><strong>4 客户端(WinCVS)的安装与配置： </strong></span></p>
<p><span class=14>4.1 客户端机器和环境配置：</span><br><br>1. 操作系统：Windows 2000 Professional SP2中文版 <br>2. 机器名称：YCW2000 <br>3. 机器地址：192.168.0.2 (内部IP) <br>4. 网络环境：100兆交换局域网，可以直接访问到Server <br>5. 硬盘分区格式：FAT32与NTFS都可以。 </p>
<p class=14>4.2 安装WinCVS： </p>
<p>1. 下载WinCVS 1.3b13，全部按照默认安装就可以了。 <br>2. 启动WinCVS，开始使用。特别注意：以下的所有操作都是在YCW2000(192.168.0.2)这台机器上远程完成的，此时的Server(192.168.0.6)主机已经进入了锁定状态。 </p>
<p class=14><strong>5 管理员使用WinCVS进行远程管理： </strong></p>
<p class=14>5.1 配置WinCVS成管理员状态： </p>
<p>1. 准备管理员工作目录：(在YCW2000机器上) <br>E:\CVSClient\Admin (管理员工作目录) <br>E:\CVSTemp (WinCVS临时目录) <br>2. 第一次启动WinCVS时会自动弹出Preferences配置页面，也可以通过Admin=&gt;Preference菜单进入；第一次使用时需要配置如下的3个页面： <br>General页面设置： <br>注：按照图示方式输入即可，需要注意的是Path部分的格式是Unix路径格式，它指的是CVSNT端设置的工作根目录。 <br>CVS页面设置： 注：Home路径是设置密码等文件的存放位置，必须指定，否则在登陆时，WinCVS也要弹出设置框。这个Home路径需要Python.exe这个外挂程序才有效。这里选择已经准备好的路径：E\CVSTemp <br>WinCVS页面设置： <br>注：此页面设置WinCVS的外挂编辑程序，通常使用UltraEdit比较方便。 <br>3. 设置管理员的工作路径：可以点按图标 ，或View=&gt;Browse Location=&gt;Change&#8230;菜单进行设置，选择已经准备好的路径：E:\CVSClient\Admin，确认，OK，这时此目录将出现在WinCVS的左边导航栏【Workspace】内。 <br>4. 至此，WinCVS就被配置成了远程的管理员使用状态，下面进行一般管理员需要的基本操作演练。演练的内容为：Administrator需要管理Jackey，Goury，Riolee三个用户，分别为这3个用户建立工作目录，每个人只能访问自己的工作目录。同时，只有Administrator能够进行权限分配，其它人没有任何管理权限。 </p>
<p class=14>5.2 管理员进行管理演练： </p>
<p>1. 登陆远程CVSNT： <br>　　◇ 选择Admin=&gt;Login菜单，默认设置，OK。 <br>　　◇ 弹出密码输入框，确认，OK。注意观察输出框【OutPut】的返回结果。 <br>2. Checkout默认模块：（CVSRoot管理模块） <br>　　◇ 在左边导航栏【Workspace】内，选择【Admin】点按右键，选择【Checkout <br>　　modules&#8230;】，在【Checkout settings】中输入CVSRoot，确定，OK。如下图： <br>　　◇ 如果成功的话，会在【Admin】栏下增加一个【CVSRoot】目录。表示您已经将【<br>　 CVSRoot】这个管理模块下载到本地了。 </p>
<p><span class=14>3. CVS中目录权限介绍：</span><br><br>◇ 系统支持的目录权限列表： <br>r (读取权限) <br>w (写入权限) <br>c (创建和删除权限) <br>n (没有任何权限) <br>◇ 默认情况下，任何用户都拥有任何目录的所有权限。 <br>◇ 任何情况下只有目录的拥有者和Administrator才有权力更改目录的使用权限。下面将会介绍如何修改目录权限和目录的拥有者。 </p>
<p class=14>4. 修改CVSRoot的权限：只让Administrator拥有rcw三种全部权限。 </p>
<p>◇ 选中刚刚下载的【CVSRoot】模块，【Ctrl+L】或Admin=&gt;Command Line&#8230;，弹出Command Line Settings对话框，直接执行CVS命令。 <br>◇ 取消所有用户的默认权限：cvs chacl default:n 回车，OK，完成。 <br>◇ 设置Administrator拥有所有权限：cvs chacl administrator:rcw 回车，OK，完成。 <br>◇ 更改【CVSRoot】的拥有者：cvs chown administrator 回车，OK，完成。 <br>◇ 查看【CVSRoot】的权限状态：cvs lsacl 回车，OK，在【Output】中显示： <br>Owner: administrator <br>default:n <br>administrator:rwc <br>◇【CVSRoot】的权限配置完毕。 </p>
<p class=14>5. 编写代码库中的模块文件，便于多用户下载方便。 </p>
<p>l 需要自己编写的模块文件格式如下：(实现基本功能) <br>【模块一的描述】【n个空格或参数】【相对目录路径一(DirA)】 <br>【模块二的描述】【n个空格或参数】【相对目录路径二(DirB)】 <br>&#8230;&#8230; <br>【模块X的描述】【n个空格或参数】【相对目录路径X(DirX)】 <br>◇【描述信息】与【相对路径】在字面上不一致时，需要使用-a参数。 <br>◇ 【相对路径】指的是CVS会自动带上根路径，这里是F:\KHRoot，所以上面例子的完整路径为：F:\KHRoot\DirA <br>◇ 了解了模块文件结构，现在来实际操作一把：双击【CVSRoot】模块下的modules文件，用UltraEdit打开进行编辑。 <br>◇ 为Jackey，Goury，Riolee三个用户分配工作目录和完成其它模块描述。 <br>CVSRoot CVSRoot <br>Jackey工作目录 -a Jackey <br>Goury工作目录 -a Goury <br>Riolee工作目录 -a Riolee <br>◇ 编辑完毕，存盘。回到WinCVS，选中modules这个文件【Ctlr+M】或右键选择【Commit selection&#8230;】，默认设置，【确认】，OK，完成上传。 </p>
<p class=14>6 . 为三个用户分别上传工作目录： </p>
<p>◇ 在YCW2000机器上的E:\CVSClient\Admin分别建立三个目录分别名为：Jackey，Goury，Riolee，作为临时交换目录。 <br>◇ 在新创建的每个目录中用UltraEdit或拷贝一个Readme.txt作为引子文件！！：） <br>◇ 然后，回到WinCVS，在【Workspace】栏的【Admin】目录下形成如下的目录结构： <br>◇ 分别选中Goury，Jackey，Riolee，右键，点按【Import Module】，选择【Continue】，其它全部使用默认值，【确定】，OK，完成上传工作。 <br>◇ 仔细观察【Output】窗口，确认都成功上传了。 <br>◇ 转移到系统的Explore程序中，删除E:\CVSClient\Admin目录下的Jackey，Goury，Riolee三个目录。然后回到WinCVS当中。(一定要删除！！！：) <br>◇ 至此，就完成了工作目录的上传工作。 </p>
<p class=14>7. 【Checkout】下载3个用户的工作目录到【Admin】目录下： </p>
<p>◇ 在【Workspace】栏选择【Admin】目录，右键，点按【Checkout Module&#8230;】,如下图： <br>◇ 选择【&#8230;】，得到CVSNT上最新的模块配置情况，弹出如下的信息框： <br>◇ 这个结构图就是刚才在modules当中编写的模块文件格式信息。选择【Jackey工作目录】，下载到YCW2000机器的E:\CVSClient\Admin目录下。 <br>◇ 按照以上操作，依次分别下载【Goury工作目录】和【Riolee工作目录】。形成如下状态： </p>
<p><br><span class=14>8. 为三个用户分别设置各自目录的访问权限。（只有自己才能访问自己的工作目录）</span> </p>
<p>◇ 选中【Goury】目录，【Ctrl+L】或Admin=&gt;Command Line&#8230;，弹出Command Line Settings对话框，直接执行CVS命令。 <br>◇ 取消所有用户的默认权限：cvs chacl default:n 回车，OK，完成。 <br>◇ 设置Goury拥有所有权限：cvs chacl goury:rcw 回车，OK，完成。 <br>◇ 查看【CVSRoot】的权限状态：cvs lsacl 回车，OK，在【Output】中显示： <br>Owner: administrator <br>default:n <br>goury:rwc <br>◇ 按照以上的方法依次分别设置【Jackey】与【Riolee】的工作目录访问权限。 <br>◇ 至此，完成了3个用户的目录权限分配。注意，虽然Administrator也没有权力再次【Checkout】那3个用户的工作目录，但是它是这些目录的拥有者又是Administrator，因此，只有它才有权力更改这些目录的访问权限。 </p>
<p><span class=15>9. CVSNT系统中的用户管理原则：</span><br><br>◇ CVSNT的用户与本机(这里是Server机器)上的NT用户是相关联的，即CVSNT用的全是本机上存在的已有用户，因此在默认情况下可以不用设置任何用户名，只要使用本机上已经存在的用户名就可以用WinCVS进行登陆。 <br>◇ 只有用Administrator身份登陆到CVSNT系统中，才有权力进行新用户的创建和删除。 <br>◇ 使用CVS创建的新用户，必须与服务器端机器上的NT用户相绑定，才能生效；因此，这个新用户实际上是绑定它的NT用户的一个替身，在CVS系统中称为&#8220;别名&#8221;。 <br>◇ 一个NT用户可以有多个&#8216;替身&#8217;或&#8216;别名&#8217;，充当多个CVS用户。 </p>
<p class=14>10. 用WinCVS进行新用户的添加和删除。(确保使用Administrator登陆) </p>
<p>◇ 【Ctrl+L】或Admin=&gt;Command Line&#8230;，弹出Command Line Settings对话框，直接执行CVS命令。 <br>◇ 添加新用户【Killer】：cvs passwd -a Killer 回车，设置密码，OK，完成。 <br>◇ 绑定【Killer】到【Jackey】：cvs passwd -r Jackey Killer 回车，设置密码，OK，完成。 <br>◇ 两次输入的密码可以不同，但以第二次输入的密码为最终密码。 <br>◇ 删除用户【Killer】：cvs passwd -X Killer 回车，OK，完成。<br>◇ 其它特殊的功能查看passwd命令的帮助。 <br><br><span class=14>11.使用完毕后，一定要【Logout】，因为WinCVS退出时并不会自动注销自己在远端的会话；这样做是为了防止其它人接着打开WinCVS，不用登陆就可以完成你能进行的所有操作了。</span></p>
<span class=14>
<p class=14><strong>6 WinCVS中常见的特殊操作： </strong></p>
<p class=14>6.1 如何删除下载的文件或目录： </p>
<p>1. 选中下载的某个或多个文件，执行【Remove】命令。 <br>2. 再次选中这些文件，执行【Commit】命令就完成了删除文件的操作。 <br>3. 本质上CVS是不会删除任何文件和目录的，即使是执行了以上操作，删除了某些文件，远端CVS实际执行的是将提交删除的文件放到了一个叫【Attic】的目录下，因此，这些被删除的文件是可以通过一定的方法恢复的。 </p>
<p class=14>6.2 如何恢复已经删除的文件或目录： </p>
<p>1. 在执行了【Remove】命令之后恢复文件。 <br>◇ 【Ctrl+L】直接输入命令cvs add xxxxx，或执行【Add Selection】界面操作。 <br>◇ 这样就可以直接恢复还未提交的删除文件。 <br>2. 在执行了【Commit】命令之后恢复文件。 <br>◇ 只能用【Ctrl+L】直接输入命令cvs add xxxxx，这时会得到一个空的文件。 <br>◇ 选中这个空文件，执行【Update】操作，得到这个文件的实体。 <br>◇ 再次选中这个文件，执行【Commit】操作，得到这个文件最新版本。 <br>3. 由于CVS系统中本质上不会删除任何目录，因此，谈不上对目录的恢复，但是CVS系统默认情况下是要在用户本机上（如：YCW2000）要删除空目录，因此，可以用如下方法得到已被删除的空目录：cvs checkout -p xxx，也可以在Admin=&gt;Preference的【Globals】页面进行设置。 <br>4. 可见，CVS系统能够保证：只要上传到服务器的文件，无论你怎么在远程进行如何的操作，正常的或非正常的操作，都可以用Administrator登陆上去，通过以上的方法找到丢失的文件。除非用户进入到远端服务器，将文件手动删除，那就没办法了：） </p>
<p><span class=14>6.3 如何得到以前版本的文件：</span><br><br>1. 有时我们需要得到以前版本的文件，而WinCVS默认方式只传递最新的版本。 <br>2. 选中某个文件，【Ctrl+G】或右键，点按【Graph selection&#8230;】，使用默认设置，就可以得到该文件所以版本的图形结构描述。 <br>3. 选中一个版本，右键，点按【Retrieve revision】，就可以得到相应的老版本文件。当然也可以得到最新版本的文件：） </p>
<p><span class=14>6.4 有时WinCVS会变得异常缓慢，怎么办？</span><br><br>1. 确认安装了WinCVS的机器上没有安装CVSNT服务器端，因为它们使用的版本有可能不一致。 <br>2. 只安装了WinCVS，但以前安装过其它版本的WinCVS，怎么办？ <br>3. 先卸载所有的WinCVS系统，删除安装目录下的残留文件。 <br>4. 打开注册表编辑器，全程查找cvs关键字，找到一个删除一个，一直到找不到为止！！：） <br>5. 重新安装WinCVS，这个问题基本上就可以解决了，我就是这样解决，不晓得你那里如何？：） </p>
<p><span class=14><strong>7 其它说明：</strong></span><br><br>1. 本文的重点在介绍如何让使用者搭建CVSNT+WinCVS这个系统，因此重点介绍了管理员的常用操作，至于一般用户使用到的操作，相对比较简单和单一，使用WinCVS的次数多了，很快就会熟悉它了。 <br>2. 这篇文档只是窥探了CVS的一点皮毛而已，CVS当中还有很多高级的用法，以及上百个命令，还有很多新鲜的管理源代码的方法，比如：tag，branch等模式；因此，热烈欢迎大家积极探索，不断共享，不断进步。。。。。。。。 <br>3. 另外，cvs.html这个帮助，里面的信息也很丰富，但是，很多地方写得不够清楚，需要不断猜测和实践才能知道怎么回事，本文的很多经验都是看这个帮助，如此这般，采用这个笨办法得到的。。。。。。 <br>4. 最后，祝愿看到此文的人，得到的帮助、提高等好处大于或等于浪费的时间、反而退步等坏处！！ </p>
</span>
<img src ="http://www.blogjava.net/greg/aggbug/132968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/greg/" target="_blank">帝国佣兵</a> 2007-07-28 13:16 <a href="http://www.blogjava.net/greg/articles/132968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>