﻿<?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-bob-文章分类-cvs</title><link>http://www.blogjava.net/keweibo/category/27993.html</link><description>一专  Java 多能  Delphi,Powerbuilder ... </description><language>zh-cn</language><lastBuildDate>Wed, 21 Sep 2011 12:55:26 GMT</lastBuildDate><pubDate>Wed, 21 Sep 2011 12:55:26 GMT</pubDate><ttl>60</ttl><item><title>使用CVSACL进行CVS权限访问控制for Linux. （转）</title><link>http://www.blogjava.net/keweibo/articles/359157.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 21 Sep 2011 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/359157.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/359157.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/359157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/359157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/359157.html</trackback:ping><description><![CDATA[<div><strong><span style="color: red;">转：http://www.iteye.com/topic/191883</span></strong><br /><br />CVS是一个很成熟的版本控制系统，它是开源世界的杰作，并且已经成为开源组织使用的标准版本控制系统，在几乎所有的开源项目中得到应用。 <p>&nbsp;&nbsp;&nbsp;  也正是由于CVS产生和应用于开源世界，使得它在代码的访问控制方面存在先天性的不足，在应用于大中型的商业项目的代码管理中收到一定的限制。因为这类型 的项目通常都需要比较细致的分工，不同的小组分别负责不同模块的开发，代码需要比较严格的访问控制，不同的开发人员只能访问授权的代码。</p> <p>&nbsp;&nbsp;&nbsp; 幸运的是，CVS是一个开源的软件，我们有什么需要的话可以通过修改它的源代码来实现。CVSACL就是实现访问控制的CVS补丁。它本身也是一个开源的项目，项目主页是<a href="http://cvsacl.sourceforge.net/index.html">http://cvsacl.sourceforge.net/index.html</a> 。它提供了对CVS的模块，目录和文件以及分支和tag的高级访问控制。CVSACL定义了8级不同的访问权限,分别是:</p> <p> </p><table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">权限</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">关键字</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">说明</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">没有权限</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">n</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">用户不能做任何cvs操作</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">读权限</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">r</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行annotate, checkout, diff, export, log, rannotate, rdiff, rlog, status命令</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">写权限</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">w</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行commit/checkin命令</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">tag</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">t</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行tag/rtag命令,依赖读权限 </p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">创建</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">c</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行add import 命令</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">删除</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">d</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行rm命令</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">全部权限</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">a</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行所有cvs命令处理cvsacl管理命令</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">管理权限</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="center">p</p> </td> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">可以执行所有命令</p> </td> </tr> </tbody> </table> <p> </p><p>1．&nbsp; 下载CVSACL：</p> <p>通过如下网址可以下载到CVSACL相关程序，目前最新版本是cvsacl-1.2.5：</p> <p><a href="https://sourceforge.net/project/showfiles.php?group_id=75057&amp;amp;package_id=77484&amp;amp;release_id=423655">https://sourceforge.net/project/showfiles.php?group_id=75057&amp;package_id=77484&amp;release_id=423655</a> </p> <p>cvsacl-1.2.5-for-cvs-1.11.22.tar.gz</p> <p>cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz</p> <p>2．&nbsp; 安装CVSACL：</p> <p>安装方法：cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz</p> <p>[root@localhost setup_cvs]# tar -zxvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz</p> <p>//解压缩cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz</p> <p>[root@localhost setup_cvs]# mv cvs-1.11.22-cvsacl-1.2.5-patched cvs-1.11.22</p> <p>//修改cvs-1.11.22-cvsacl-1.2.5-patched目录名称为 cvs-1.11.22</p> <p>[root@localhost setup_cvs]# cd cvs-1.11.22&nbsp;&nbsp;&nbsp; //进入cvs-1.11.22</p> <p>[root@localhost cvs-1.11.22]# ./configure&nbsp;&nbsp;&nbsp; //编译安装</p> <p>[root@localhost cvs-1.11.22]# make</p> <p>[root@localhost cvs-1.11.22]# make install</p> <p>[root@localhost setup_cvs]# cvs &#8211;version&nbsp;&nbsp;&nbsp; //查看cvs版本</p> <p>Concurrent Versions System (CVS) 1.11.22 (client/server)</p> <p>with CVSACL Patch 1.2.5 (cvsacl.sourceforge.net)</p> <p>注：不需要特意删除旧版本的CVS。</p> <p>3．&nbsp; CVS服务器的配置：</p> <p>（1） 修改配置文件：</p> <p>[root@localhost /]# vi /etc/services</p> <p>查看是否有：</p> <p>cvspserver 2401/tcp #CVS client/server operations<br />cvspserver 2401/udp #CVS client/server operations</p> <p>注：系统自带了CVS时，这2行也已经有了，只需要确认一下。如果没有，请自己加上去。 </p> <p>（2） 创建CVS启动脚本：</p> <p>[root@localhost /]# vi /etc/xinetd.d/cvspserver</p> <p>内容如下：</p> <p>service cvspserver<br />{<br />disable = no<br />flags = REUSE<br />socket_type = stream<br />wait = no<br />user = root<br />server = /usr/bin/cvs<br />server_args = -f --allow-root=/home/cvsroot pserver<br />log_on_success += USERID<br />log_on_failure += USERID<br />}</p> <p>注：其中，server指定CVS可执行文件路径，默认安装就是/usr/bin/cvs，server_args指定源代码库路径及认证方式等， 例子中把源代码存放在cvsroot的主目录中，也可以另外指定路径，但必须注意权限设置，pserver是密码认证方式，这种方式的安全性要差一些，但 操作起来比较简单。请注意每行等号左右都有一个空格，否则无法启动服务。</p> <p>（3） 重新启动xinetd服务：</p> <p>[root@localhost /]# service xinetd restart</p> <p>查看是否启动：[root@localhost /]# netstat -l | grep cvspserver</p> <p>屏幕显示：tcp 0 0 *:cvspserver *:* LISTEN</p> <p>说明已经正常启动，如果没有请做如下检查：</p> <p>&lt;1&gt;请检查vi /etc/xinetd.d/cvspserver文件中的server = /usr/bin/cvs路径和实际执行文件所在位置是否一致；(一般这步骤即可解决该问题)</p> <p>&lt;2&gt;请重新检查配置过程是否有错误或者遗漏；</p> <p>&lt;3&gt;最后还必须检查防火墙的设置，把2401端口打开。</p> <p>4．&nbsp; CVSACL权限设置：</p> <p>（1） 创建用于CVS的专用系统组和用户：</p> <p>[root@localhost /]# groupadd cvsroot</p> <p>[root@localhost /]# useradd &#8211;g cvsroot cvsadmin</p> <p>（2） 初始化cvs服务器环境：</p> <p>[root@localhost /]# cvs -d /cvstest init</p> <p>（3） 设置CVS配置库归属及权限：</p> <p>[root@localhost /]# chown &#8211;R cvsadmin.cvsroot /cvstest</p> <p>[root@localhost /]# chmod &#8211;R 770 /cvsroot</p> <p>（4） 修改CVSROOT/CVSROOT/aclconfig配置文件：</p> <p>[root@localhost /]# vi /cvstest/CVSROOT/aclconfig</p> <p>UseSystemGroups=yes 行首添加&#8220;#&#8221;，表示注释掉。</p> <p>UseCVSGroup=yes 去除行首的&#8220;#&#8221;，表示启用此句。</p> <p>（5） 创建CVS用户及组：</p> <p>[root@localhost /]# cd /cvstest/CVSROOT</p> <p>[root@localhost /]# htpasswd &#8211;c passwd yueyx</p> <p>[root@localhost /]# vi passwd</p> <p>yueyx:*******:cvsadmin</p> <p>将passwd文件中的所有cvs用户映射到同一个系统用户cvsadmin上。</p> <p>[root@localhost /]# vi group</p> <p>文件格式：</p> <p>group1:x:1:yueyx,test1</p> <p>用户之间用 &#8220;,&#8221;分割。</p> <p>注：cvsacl有个bug，必须在组用户最前边添加一个不存在的cvs用户，group文件才会生效。原因不明，但此方法确实管用。</p> <p>（6） 使用cvsacl细化权限：</p> <p>[root@localhost /]# cvs -d /cvstest racl yueyx:wcd &#8211;R Project/doc</p> <p>说明：/cvstest：配置库路径 yueyx：用户 wcd：参见本文&#8220;CVSACL定义了8级不同的访问权限&#8221;表格。 Project ：配置库中的Module(模块)，doc：Module(模块)下的目录</p> <p><br />格式：cvs &#8211;d 配置库位置 racl [用户||组:权限] [-Rl] [-r tag] [模块&#8230;] [文件&#8230;]</p> <p>- R 进行目录递归</p> <p>- r rev 设定版本/标签</p> <p>- l列出已定义的ACLs权限</p></div><img src ="http://www.blogjava.net/keweibo/aggbug/359157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2011-09-21 15:00 <a href="http://www.blogjava.net/keweibo/articles/359157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS版本控制實踐建議</title><link>http://www.blogjava.net/keweibo/articles/311946.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 04 Feb 2010 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/311946.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/311946.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/311946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/311946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/311946.html</trackback:ping><description><![CDATA[摘自:Eclipse從入門到精通一書<br />
(1)把項目做成模塊目錄(JAVA包),各人負責自己的模塊和目錄,這樣就不容易造成重複修改<br />
(2)做到項目每日提交,即每天下班之前都要將各自完成的代碼提交到CVS上,並且提交的代碼要求是完整可運行的代碼,關鍵是要保證其它人更新你的代碼后不會引起錯誤<br />
(3)對于共用型的文件,要做到即時修改,即時提交<br />
(4)任何人在修改文件之前,先更新CVS的最新版到本機<br />
(5)項目團隊的Eclipse等開發環境(安裝目錄,軟體版本等)要保持一致.這樣就可以將整個項目共享到CVS,團隊成員也可以從CVS上更新整個項目,而不必擔心因為一些項目配置文件不同導致更新項目后出錯.另外,當新團隊成員加入時,只要導入CVS上的整個項目,無須配置項目,就可以即刻開發運行
<img src ="http://www.blogjava.net/keweibo/aggbug/311946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2010-02-04 14:03 <a href="http://www.blogjava.net/keweibo/articles/311946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux CVS安裝和配置</title><link>http://www.blogjava.net/keweibo/articles/311216.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 29 Jan 2010 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/311216.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/311216.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/311216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/311216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/311216.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed; width: 100%;">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">
            <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span>1、&nbsp;&nbsp;&nbsp; CVS简述</span></p>
            <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span>2、&nbsp;&nbsp;&nbsp;
            CVS服务器的安装<br />
            默认情况下，CVS在Redhat Linux中已经安装，这一点可以通过在Linux命令行的情况下运行：<br />
            rpm &#8211;q
            cvs<br />
            如果出现CVS的版本信息就证明已经安装成功了。<br />
            CVS服务器安装包可以从网上的很多地方下载，也可以到CVS的官方网站进行下载。根据你所使用的系统，下载相应的版本，然后进行安装。因为我们的项目是在Redhat
            Linux下使用CVS服务器进行版本管理，所以本文将主要基于Redhat
            Linux进行介绍。首先下载CVS服务器的rpm包，当然也可以下载其它方式的包如源程序包，然后采用以下命令进行安装： <br />
            rpm -ivh cvs-1.11.7-1.i386.rpm<br />
            3、&nbsp;&nbsp;&nbsp; CVS服务器的配置<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            安装完之后的第一件事就是要配置CVS服务器的配置文件，使其能正常的工作。首先在/etc/services文件中添加cvspserver，使其成为Linux的一种服务也就是cvs服务器例程的入口，配置如下：
            <br />
            cvspserver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2401/tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cvs client/server
            operations <br />
            cvspserver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2401/udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cvs
            client/server operations <br />
            如果文件中已经存在上面的两行文字，就不用添加了。<br />
            4、&nbsp;&nbsp;&nbsp;
            配置xinetd，用xinetd来启动CVS验证服务器：<br />
            进入到/etc/xinetd.d/目录，然后编辑一个文本文件，名字一定要与/etc/services中的入口名字cvspserver一致，所以这里用cvspserver作为文件名，文件的内容如下所示：
            <br />
            service cvspserver<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disable = no<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flags =
            REUSE<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; socket_type = stream<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait = no<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user =
            root<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server = /usr/bin/cvs<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server_args = -f
            --allow-root=/usr/cvsroot pserver<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log_on_failure +=
            USERID<br />
            }<br />
            编辑文件之后测试cvspserver服务是否配置成功。<br />
            执行<br />
            <strong><span style="color: red;">/etc/init.d/xinetd
            restart</span></strong><br />
            重新启动服务，启动成功之后，执行下面的语句，验证服务是否启动正常：<br />
            telnet localhost
            2401<br />
            如果出现如下字样：<br />
            Trying 127.0.0.1...<br />
            Connected to localhost.<br />
            Escape
            character is '^]'.<br />
            输入hi，会继续输出如下字样<br />
            cvs [pserver aborted]: bad auth protocol
            start: hi<br />
            Connection closed by foreign
            host.<br />
            出现以上的现象表示CVS用户验证服务器已经配置成功。<br />
            如果出现如下字样，表示配置不成功，请重新检查以上的配置：<br />
            Trying
            127.0.0.1...<br />
            telnet: connect to address 127.0.0.1: Connection
            refused<br />
            5、&nbsp;&nbsp;&nbsp;
            配置CVS用户：<br />
            首先建立一个用户组cvs，可以使用groupadd或者addgroup命名，也可以直接编辑/etc/group文件添加这个组，然后添加一个用户cvsuser：<br />
            groupadd
            cvs<br />
            useradd cvsuser &#8211;g cvs <br />
            passwd
            cvsuser<br />
            设置新的密码。<br />
            在/usr目录下建立cvsroot目录（也可以在其它的目录下建，但是应该和cvspserver文件中的选项一致），然后修改/usr/cvsroot的属主及属性：<br />
            cd
            /usr<br />
            mkdir cvsroot<br />
            chown &#8211;R cvsuser.cvs cvsroot<br />
            chmod &#8211;R 771
            cvsroot<br />
            6、&nbsp;&nbsp;&nbsp;
            初始化CVS服务器<br />
            安装完CVS服务器之后的另一件重要的事情就是要初始化CVS服务器的根目录，以后创建的CVS项目都将建立在这个目录下，采用的命令如下：<br />
            cvs
            &#8211;d /usr/cvsroot
            init<br />
            如果没有任何提示，表示初始化成功。初始化成功之后，会在/usr/cvsroot目录中创建CVSROOT目录，目录中有如下文件：<br />
            -r--r--r--&nbsp;&nbsp;&nbsp;
            1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 493 Apr 5 20:19 checkoutlist<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1
            root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 693 Apr 5 20:19 checkoutlist,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1
            root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 760 Apr 5 20:19 commitinfo<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp;
            root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 960 Apr 5 20:19 commitinfo,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp;
            root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 527 Apr 5 20:19 config<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            727 Apr 5 20:19 config,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 753 Apr 5
            20:19 cvswrappers<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 953 Apr 5 20:19
            cvswrappers,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1025 Apr 5 20:19
            editinfo<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1225 Apr 5 20:19
            editinfo,v<br />
            drwxrwxr-x&nbsp;&nbsp;&nbsp; 2 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096 Apr 5 20:19
            Emptydir<br />
            -rw-rw-rw-&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Apr 5 20:19
            history<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1141 Apr 5 20:19
            loginfo<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1341 Apr 5 20:19
            loginfo,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1151 Apr 5 20:19
            modules<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1351 Apr 5 20:19
            modules,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 564 Apr 5 20:19
            notify<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 764 Apr 5 20:19
            notify,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 649 Apr 5 20:19
            rcsinfo<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 849 Apr 5 20:19
            rcsinfo,v<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 879 Apr 5 20:19
            taginfo<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1079 Apr 5 20:19
            taginfo,v<br />
            -rw-rw-rw-&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Apr 5 20:19
            val-tags<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1026 Apr 5 20:19
            verifymsg<br />
            -r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1226 Apr 5 20:19
            verifymsg,v<br />
            这样目录/usr/cvsroot就成为CVS服务器的根目录，以后创建的目录都将默认的存放在这个目录下。<br />
            7、&nbsp;&nbsp;&nbsp;
            登录cvs服务器（在Linux或其它Unix系统下进行登录的情况）：<br />
            输入如下命令：<br />
            cvs -d
            :pserver:cvsuser@localhost:/usr/cvsroot
            login<br />
            提示输入密码，输入上面设置的密码，如果没有任何提示，就证明成功登录了</span></p>
            <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span><span style="color: red;">第一次登錄會有cvs login: warning: failed to open /home/cvsuser/.cvspass for reading: No such file or directory類似的提示信息.以后登錄就不會有了.</span><br />
            </span></p>
            <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span>登录成功之后在当前用户的$HOME目录中生成.cvspass文件，可以利用vi对文件进行察看。<br />
            由于以&#8220;.&#8221;开头的文件在Linux中是隐藏的，所以可以利用如下命令进行察看：<br />
            ls
            &#8211;a<br />
            这个文件记载了用户的登录信息。执行注销命令可以删除该文件中的登录信息<br />
            cvs -d
            :pserver:cvsuser@localhost:/usr/cvsroot logout<br />
            下面对登录命令的语法进行说明：
            <br />
            其中，:pserver表示采用pserver方式进行用户登录认证，一般的CVS服务器都采用这种方式，当然也可以采用其它方式，具体参考相应的资料；
            <br />
            :cvsuser表示要登录的用户名，只要是cvs组的成员都可以，如：cvsuser；
            <br />
            @host表示要登录的服务器，可以是DNS名，也可以是IP地址，如：192.168.0.1；
            <br />
            :/usr/cvsroot表示CVS在服务器上的目录，也可以是其它目录（由第6中你所指定的用来做init初始化的目录决定）；
            <br />
            提示：<br />
            a、也可以把export
            CVSROOT=:pserver:cvsuser@192.168.0.1:/usr/cvsroot这一句直接写在用户的初始化文件中（如：.bash_profile），这样用户每次登录时，只需输入：
            <br />
            cvs login <br />
            然后输入相应的口令就可以登录到cvs服务器上。 <br />
            b、如果是本地登录，可以直接把export
            CVSROOT=/usr/cvsroot这一句写在用户的初始化文件如：/etc/profile中；然后执行如下命令使环境变量生效：<br />
            source
            /etc/profile<br />
            8、&nbsp;&nbsp;&nbsp;
            向CVS添加新的项目模块<br />
            一般我们都已经有一个或多个项目了，这样我们可以用下面步骤生成一个新的CVS项目。将一个工程文件置于CVS中进行版本控制，在CVS
            术语中称作导入(import)。从名字上就可以看出，在导入前需要为此作些准备工作。<br />
            输入操作的基本要求是有个"干净"的目录结构。"干净"的意思是不需要版本控制的文件都被移走了（如编译生成的文件，备份文件等等）。如果工程已经开始一段时间了，这就显得很重要。在目录中也许有些是不打算将其置于版本控制下的文件，但是又想将他们放在这里，这种情况下，你要在输入之前将它们移走，然后再移回来。<br />
            注意的是CVS
            认为空目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录，需要在其下创建一个哑文件。建议你创建一个名为 README.txt
            的文件，其内容为对目录的简要说明。<br />
            进入到已有项目的目录，比如叫 cvstest：<br />
            cd
            /home/cvsuser/cvstest<br />
            运行命令将项目文件导入到cvs仓库中：<br />
            cvs import -m "this is a cvstest
            project" cvstest tengtu
            start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <br />
            说明：import 是cvs的命令之一，表示向cvs仓库输入项目文件． <br />
            -m参数后面的字串是描述文本，对项目进行描述，如果不加 -m
            参数，那么cvs会自动运行一个编辑器（一般是vi，但是可以通过修改环境变量EDITOR来改成你喜欢用的编辑器）让你输入信息，cvstest
            是项目名称（实际上是仓库名，在CVS服务器上会存储在以这个名字命名的仓库里）<br />
            tengtu是这个厂商标记．<br />
            start 是每次 import
            标识文件的输入层次的标记。<br />
            9、&nbsp;&nbsp;&nbsp;
            从cvs本地服务器上checkout相应的模块：<br />
            a、如果是在CVS服务器所在计算机上，可以直接采用如下命令： <br />
            cvs checkout
            cvstest <br />
            这样将把cvstest项目模块checkout到当前目录下。
            <br />
            b、如果是在远程运行Linux或其它Unix系统上，在第7中登录之后也可以用上边的命令把相应的项目模块checkout到当前目录下。
            <br />
            另外，如果是在windows端进行checkout，可以采用WinCVS，那么还要对WinCVS进行其它的一些配置，下一部分将具体介绍它的配置方法。
            </span><br />
            </p>
            <br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/keweibo/aggbug/311216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2010-01-29 14:15 <a href="http://www.blogjava.net/keweibo/articles/311216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse中cvs的使用介绍(转)</title><link>http://www.blogjava.net/keweibo/articles/175910.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 17 Jan 2008 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/175910.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/175910.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/175910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/175910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/175910.html</trackback:ping><description><![CDATA[<p>Eclipse中cvs的使用介绍[附图]：</p>
<p>很多时候我们在做项目开发时，会用到cvs，现在我给大家介绍一下关于eclipse下怎么使用cvs管理功能，eclipse本身是自带cvs的，我们只要简单设置一下让它<a class="qs_highlight1" id="hl_5" onmouseover="window.clearTimeout(_ht[5]);qs_show_frame(event,this,5);" style="font-size: 1em" onclick="_write_cookie('click33',5);" onmouseout="_on_div[5]=false;_ht[5]=window.setTimeout('qs_is_on_div(5)',500);" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=33&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//ad.sina.com.cn/minisite/anmum/anmum/index.html&amp;k=%u8FDE%u63A5&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=596708&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">连接</a>到cvs服务器上。<br />
&nbsp;&nbsp;&nbsp; 看下图<br />
<img height="338" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333000.jpg" width="586" border="0" /><br />
点击cvs的图标出现此画面后，在空白处点击右键就可以，新建一个资源库位置，如下图<br />
<img height="573" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333001.jpg" width="800" border="0" /><br />
输入完信息后，点击完成，就建立好了，跟cvs服务器的连接，下面我们打开cvs服务器上的目录<br />
<img height="575" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333002.jpg" width="800" border="0" /><br />
对于cvs服务器上的目录，我们可以检出，一种是检出为项目，就会将目录检出在eclipse中自动生成一个项目,<br />
也可以将某个目录检出到任何一个项目中即〔检出到〕这个功能，<a class="qs_highlight1" id="hl_3" onmouseover="window.clearTimeout(_ht[3]);qs_show_frame(event,this,3);" style="font-size: 1em" onclick="_write_cookie('click24',3);" onmouseout="_on_div[3]=false;_ht[3]=window.setTimeout('qs_is_on_div(3)',500);" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=24&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//www.dell.com.cn&amp;k=%u9700%u8981&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=559671&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">需要</a>注意的是只有检出的文件，在修改后才可以提交。下面看对文件的操作：<br />
<img height="574" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333003.jpg" width="800" border="0" /><br />
对于文件来说，我们最常用的就是比较cvs中各个版本文件的区别，方便我们查找更新有没有问题，点击任何一个文件点击右键就可看到上面的图片，然后我们使用在资源历史记录中显示，看到下图：<br />
<img height="573" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333004.jpg" width="800" border="0" /><br />
我们按住ctrl键点击<a class="qs_highlight1" id="hl_6" onmouseover="window.clearTimeout(_ht[6]);qs_show_frame(event,this,6);" style="font-size: 1em" onclick="_write_cookie('click29',6);" onmouseout="_on_div[6]=false;_ht[6]=window.setTimeout('qs_is_on_div(6)',500);" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=29&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//www.chinahr.com/&amp;k=%u9F20%u6807&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=884773&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">鼠标</a>选择两个版本的文件，然后点击鼠标右键，点击比较就可以比较这个文件这两个版本之间的差异了。<br />
<img height="572" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333005.jpg" width="800" border="0" /><br />
下面我们看看怎么样来更新cvs服务器上的文件，前面已经讲了，只有从cvs服务器中检出的文件才可以更新和提交，看下图<br />
<img height="600" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333006.jpg" width="800" border="0" /><br />
在 项目中选中任何一个检出的文件，点击鼠标右键，选择小组，就可以看到提交和更新等很多功能。你只要更改好后，点击提交就可提交到cvs服务器中，点击更新 是从cvs服务器中取文件更新本地文件,这里需要注意的是，当我们建立的项目是源代码文件和编译好的类文件是不同目录的时候，是不能传类文件，传的话会导 致cvs服务器上的文件出问题，只能将类文件单独复制到专门用来上传的目录上传，因为项目在编译的时候会将原文件下的cvs目录也编译到类文件下，所以会 导致这个问题。<br />
下面顺便说一个eclipse本地文件的一个历史记录的功能，看到上图中的比较和替换为，就是eclipse一个本地的历史记录功能，帮助你可以恢复以前或者跟以前的文件比较的功能。看下图<img height="561" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333007.jpg" width="800" border="0" /><br />
相信大家一看就会明白这个功能。<br />
关于eclipse＋cvs的基本功能使用其实很简单，大家试一下就知道，我在项目中用得最多的都是它的比较功能，对于文件上传我还是用cvs的客户端程序，因为源代码目录和类文件目录不同，所以这样比较<a class="qs_highlight1" id="hl_2" onmouseover="window.clearTimeout(_ht[2]);qs_show_frame(event,this,2);" style="font-size: 1em" onclick="_write_cookie('click150',2);" onmouseout="_on_div[2]=false;_ht[2]=window.setTimeout('qs_is_on_div(2)',500);" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=150&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//www.king-long.com.cn/discovery/index.html&amp;k=%u5B89%u5168&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=958847&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">安全</a>，希望<br />
这些能对各位使用eclipse中的cvs有所帮助。如有问题欢迎指出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －－大肚翁&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2004.10.9<br />
</p>
<div class="postTitle"><a href="http://blog.csdn.net/iwo99/archive/2004/10/10/130884.aspx"><font color="#000080">eclipse +cvs 的基本使用方法(二)</font></a> </div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在第一部分中讲述了一个问题，关于 项目在编译的时候会将原文件下的cvs目录也编译到类文件下，所以会导致上传类文件出问题。经过这两天的研究<a class="qs_highlight1" id="hl_7" onmouseover="window.clearTimeout(_ht[7]);qs_show_frame(event,this,7);" style="font-size: 1em" onclick="_write_cookie('click230',7);" onmouseout="_on_div[7]=false;_ht[7]=window.setTimeout('qs_is_on_div(7)',500);" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=230&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//www.chanet.com.cn/click.cgi%3Fa%3D59068%26d%3D21648%26u%3D%26e%3D&amp;k=%u53D1%u73B0&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=967078&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">发现</a>这个问题是可以<a class="qs_highlight1" id="hl_0" onmouseover="window.clearTimeout(_ht[0]);qs_show_frame(event,this,0);" style="font-size: 1em" onclick="_write_cookie('click29',0);" onmouseout="_on_div[0]=false;_ht[0]=window.setTimeout('qs_is_on_div(0)',500);" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=29&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//www.chinahr.com/&amp;k=%u89E3%u51B3&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=995884&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">解决</a>的。方法如下：<br />
点击窗口下的首选项看到下图：<br />
<img height="600" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333008.jpg" width="800" border="0" /><br />
按图上所说的，已过滤CVS目录，还有就是去掉完全构建时清空文件夹，这样的话在编译文件是就不会将类文件所在的文件夹中的cvs目录删除。做好这两部就可以解决问题了。<br />
<br />
</p>
<div class="postTitle"><a href="http://blog.csdn.net/iwo99/archive/2004/10/10/131442.aspx"><font color="#000080">eclipse +cvs 的基本使用方法(三)</font></a> </div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们在多人进行一个项目进行开发时，通常会碰到一个问题就是两个人从cvs服务器上同时下载了同一个文件，进行修改，当一个人先提交而另一个人后提交时通 常就将前一个人修改的覆盖掉了，我们看看eclipse中的cvs是怎样<a class="qs_highlight1" id="hl_8" onmouseover="window.clearTimeout(_ht[8]);qs_show_frame(event,this,8);" style="font-size: 1em" onclick="_write_cookie('click242',8);" onmouseout="_on_div[8]=false;_ht[8]=window.setTimeout('qs_is_on_div(8)',500);" href="http://clk.qunsee.com/click/click.php?cpid=1021&amp;ads_id=242&amp;pid=99001227&amp;cid=1235&amp;url=http%3A//www.chanet.com.cn/click.cgi%3Fa%3D59068%26d%3D9456%26u%3D%26e%3D&amp;k=%u5904%u7406&amp;s=http%3A//www.gispark.com/html/programme/2007/0603/1178.html&amp;rn=847736&amp;v=1&amp;ref=http%3A//www.google.cn/search%3Fhl%3Dzh-CN%26q%3D%25E5%25B0%2586%25E9%25A1%25B9%25E7%259B%25AE%25E8%25BF%259E%25E6%258E%25A5%25E5%2588%25B0CVS%25E4%25B8%25AD%26btnG%3DGoogle+%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df&amp;province=%u5E7F%u4E1C&amp;city=%u4E1C%u839E" target="_blank">处理</a>这个问题的，首先我们从cvs中检出一个目录为项目为test然后打开一个文 件test1.txt文件在文件中加了adc如下图：<br />
<img height="306" alt="" src="http://www.gispark.com/upimg/allimg/20070603/2333009.jpg" width="800" border="0" /><br />
<br />
然后我们用cvs的客户端程序下载同一个test目录，然后在test1.txt文件中增加bbb，这样相当于两个人同时修改了同一个文件，我们先提交一个。如下图：<br />
<img height="327" alt="" src="http://www.gispark.com/upimg/allimg/20070603/23330010.jpg" width="800" border="0" /><br />
<br />
然后在eclipse中提交同样的文件test1.txt，如下图<br />
<br />
<img height="574" alt="" src="http://www.gispark.com/upimg/allimg/20070603/23330011.jpg" width="800" border="0" /><br />
会出现一个错误：<br />
<img height="575" alt="" src="http://www.gispark.com/upimg/allimg/20070603/23330012.jpg" width="800" border="0" /><br />
这个错误表明了你的提交文件失败了，我再使用另外一个功能，就是与资源库同步功能，在前一张图中可以看到，点击资源库同步后看到下图：图中有相应的说明<br />
<img height="600" alt="" src="http://www.gispark.com/upimg/allimg/20070603/23330013.jpg" width="800" border="0" /><br />
这样你就可以知道第一个更新修改了哪里，更重要是你也可以覆盖提交，或者覆盖更新本地的文件，看下图：<br />
<img height="600" alt="" src="http://www.gispark.com/upimg/allimg/20070603/23330014.jpg" width="800" border="0" /><br />
<br />
<span style="color: red">转:http://www.gispark.com/html/programme/2007/0603/1178.html</span><br />
<script type="text/javascript"><!-- google_ad_client="pub-3178351830176495" ; google_ad_width="468;
google_ad_height" = 60; google_ad_format="468x60_as_rimg" ; google_cpa_choice="CAAQhZOgnAIaCCfXj46FmpPgKJnA93M" ; google_ad_channel="4614225082" ;
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></p>
 <img src ="http://www.blogjava.net/keweibo/aggbug/175910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-17 13:47 <a href="http://www.blogjava.net/keweibo/articles/175910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS中修改文件</title><link>http://www.blogjava.net/keweibo/articles/166372.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 08 Dec 2007 15:38:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/166372.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/166372.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/166372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/166372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/166372.html</trackback:ping><description><![CDATA[<p><br />
&nbsp; CVS操作流程：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 登入 (login)，只需做一次，CVS会记住你第一次登入的信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在本地建一个工作目录，取出（checkout）整份源代码 (类似下载)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 依您的任务分担，修改某一个模块(modules)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改前，先查询模块在库状态（status）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 视在库状态，对比二者的差异（diff）,进行调整。<br />
（是否和他人产生冲突，若无冲突，修改完后，就可直接存入（commit）源码库）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若有冲突，就要和他人讨论，取得协调。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; commit修改后的模块，请务必在注释中，详述修改的意图<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每经过一段时日，查询在库状态，并更新（update）您的工作目录。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 退出（Logout）,执行此命令后，下次操作前要重新登入（Login）。</p>
<p>转:http://bbs.scmlife.com/viewthread.php?tid=1920&nbsp;</p>
 <img src ="http://www.blogjava.net/keweibo/aggbug/166372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-12-08 23:38 <a href="http://www.blogjava.net/keweibo/articles/166372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>