??xml version="1.0" encoding="utf-8" standalone="yes"?>精品一区电影,久久精品人人做人人爽电影,国产精品久久不能http://www.aygfsteel.com/keweibo/category/27993.html一? Java 多能 Delphi,Powerbuilder ... zh-cnWed, 21 Sep 2011 12:55:26 GMTWed, 21 Sep 2011 12:55:26 GMT60使用CVSACLq行CVS权限讉K控制for Linux. Q{Q?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/keweibo/articles/359157.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/359157.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/359157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/359157.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/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是一个很成熟的版本控制系l,它是开源世界的CQƈ且已l成为开源组l用的标准版本控制pȝQ在几乎所有的开源项目中得到应用?<p>    也正是由于CVS产生和应用于开源世界,使得它在代码的访问控制方面存在先天性的不Q在应用于大中型的商业项目的代码理中收C定的限制。因cd 的项目通常都需要比较细致的分工Q不同的组分别负责不同模块的开发,代码需要比较严格的讉K控制Q不同的开发h员只能访问授权的代码?/p> <p>    q运的是QCVS是一个开源的软gQ我们有什么需要的话可以通过修改它的源代码来实现。CVSACL是实现讉K控制的CVS补丁。它本n也是一个开源的目Q项目主|<a >http://cvsacl.sourceforge.net/index.html</a> 。它提供了对CVS的模块,目录和文件以及分支和tag的高U访问控制。CVSACL定义?U不同的讉K权限,分别?</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">用户不能做Q何cvs操作</p> </td> </tr> <tr> <td style="font-size: 10pt; color: #000000;"> <p style="font-size: 10pt; color: #000000;" align="left">L?/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命o</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命o</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命o,依赖L?</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 命o</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命o</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命o处理cvsacl理命o</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>1Q?nbsp; 下蝲CVSACLQ?/p> <p>通过如下|址可以下蝲到CVSACL相关E序Q目前最新版本是cvsacl-1.2.5Q?/p> <p><a >https://sourceforge.net/project/showfiles.php?group_id=75057&package_id=77484&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>2Q?nbsp; 安装CVSACLQ?/p> <p>安装Ҏ(gu)Qcvs-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    //q入cvs-1.11.22</p> <p>[root@localhost cvs-1.11.22]# ./configure    //~译安装</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 –version    //查看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>3Q?nbsp; CVS服务器的配置Q?/p> <p>Q?Q?修改配置文gQ?/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>注:pȝ自带了CVSӞq?行也已经有了Q只需要确认一下。如果没有,误己加上去?</p> <p>Q?Q?创徏CVS启动脚本Q?/p> <p>[root@localhost /]# vi /etc/xinetd.d/cvspserver</p> <p>内容如下Q?/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>注:其中Qserver指定CVS可执行文件\径,默认安装是/usr/bin/cvsQserver_args指定源代码库路径及认证方式等Q?例子中把源代码存攑֜cvsroot的主目录中,也可以另外指定\径,但必L意权限设|,pserver是密码认证方式,q种方式的安全性要差一些,?操作h比较单。请注意每行{号左右都有一个空|否则无法启动服务?/p> <p>Q?Q?重新启动xinetd服务Q?/p> <p>[root@localhost /]# service xinetd restart</p> <p>查看是否启动Q[root@localhost /]# netstat -l | grep cvspserver</p> <p>屏幕昄Qtcp 0 0 *:cvspserver *:* LISTEN</p> <p>说明已经正常启动Q如果没有请做如下检查:</p> <p><1>h查vi /etc/xinetd.d/cvspserver文g中的server = /usr/bin/cvs路径和实际执行文件所在位|是否一_(一般这步骤卛_解决该问?</p> <p><2>请重新检查配|过E是否有错误或者遗漏;</p> <p><3>最后还必须查防火墙的设|,?401端口打开?/p> <p>4Q?nbsp; CVSACL权限讄Q?/p> <p>Q?Q?创徏用于CVS的专用系l组和用P</p> <p>[root@localhost /]# groupadd cvsroot</p> <p>[root@localhost /]# useradd –g cvsroot cvsadmin</p> <p>Q?Q?初始化cvs服务器环境:</p> <p>[root@localhost /]# cvs -d /cvstest init</p> <p>Q?Q?讄CVS配置库归属及权限Q?/p> <p>[root@localhost /]# chown –R cvsadmin.cvsroot /cvstest</p> <p>[root@localhost /]# chmod –R 770 /cvsroot</p> <p>Q?Q?修改CVSROOT/CVSROOT/aclconfig配置文gQ?/p> <p>[root@localhost /]# vi /cvstest/CVSROOT/aclconfig</p> <p>UseSystemGroups=yes 行首d“#”Q表C注释掉?/p> <p>UseCVSGroup=yes 去除行首?#8220;#”Q表C启用此句?/p> <p>Q?Q?创徏CVS用户及组Q?/p> <p>[root@localhost /]# cd /cvstest/CVSROOT</p> <p>[root@localhost /]# htpasswd –c passwd yueyx</p> <p>[root@localhost /]# vi passwd</p> <p>yueyx:*******:cvsadmin</p> <p>passwd文g中的所有cvs用户映射到同一个系l用户cvsadmin上?/p> <p>[root@localhost /]# vi group</p> <p>文g格式Q?/p> <p>group1:x:1:yueyx,test1</p> <p>用户之间?“,”分割?/p> <p>注:cvsacl有个bugQ必dl用h前边d一个不存在的cvs用户Qgroup文g才会生效。原因不明,但此Ҏ(gu)实用?/p> <p>Q?Q?使用cvsacll化权限Q?/p> <p>[root@localhost /]# cvs -d /cvstest racl yueyx:wcd –R Project/doc</p> <p>说明Q?cvstestQ配|库路径 yueyxQ用?wcdQ参见本?#8220;CVSACL定义?U不同的讉K权限”表格?Project Q配|库中的Module(模块)QdocQModule(模块)下的目录</p> <p><br />格式Qcvs –d 配置库位|?racl [用户||l?权限] [-Rl] [-r tag] [模块…] [文g…]</p> <p>- R q行目录递归</p> <p>- r rev 讑֮版本/标签</p> <p>- l列出已定义的ACLs权限</p></div><img src ="http://www.aygfsteel.com/keweibo/aggbug/359157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2011-09-21 15:00 <a href="http://www.aygfsteel.com/keweibo/articles/359157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS版本控制實踐http://www.aygfsteel.com/keweibo/articles/311946.htmlKeKeThu, 04 Feb 2010 06:03:00 GMThttp://www.aygfsteel.com/keweibo/articles/311946.htmlhttp://www.aygfsteel.com/keweibo/comments/311946.htmlhttp://www.aygfsteel.com/keweibo/articles/311946.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/311946.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/311946.html (1)把項目做成模塊目?JAVA?,各h負K自己的模塊和目錄,這樣׃Ҏ(gu)造成重複修改
(2)做到項目每日提交,x天下班之前都要將各自完成的代提交到CVS?並且提交的代D求是完整可運行的代碼,關鍵是要保證其它人更C的代后不會引v錯誤
(3)于q型的文g,要做到即時修?x提交
(4)M人在修改文g之前,先更新CVS的最新版到本?br /> (5)項目團隊的Eclipse{開發環?安裝目錄,軟體版本{?要保持一?這樣可以將整個項目共享到CVS,團隊成員也可以從CVS上更新整個項?而不必擔心因Z些項目配|文件不同導致更新項目后出錯.另外,當新團隊成員加入?只要入CVS上的整個項?無須配置項目,可以即刻開發運?

Ke 2010-02-04 14:03 发表评论
]]>
linux CVS安裝和配|?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/keweibo/articles/311216.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/311216.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/311216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/311216.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/311216.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed; width: 100%;"> <tbody> <tr> <td> <div id="wmqeeuq" class="cnt" id="blog_text"> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span>1?nbsp;   CVSq?/span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span>2?nbsp;   CVS服务器的安装<br /> 默认情况下,CVS在Redhat Linux中已l安装,q一点可以通过在Linux命o行的情况下运行:<br /> rpm –q cvs<br /> 如果出现CVS的版本信息就证明已经安装成功了?br /> CVS服务器安装包可以从网上的很多地方下蝲Q也可以到CVS的官方网站进行下载。根据你所使用的系l,下蝲相应的版本,然后q行安装。因为我们的目是在Redhat Linux下用CVS服务器进行版本管理,所以本文将主要ZRedhat Linuxq行介绍。首先下载CVS服务器的rpm包,当然也可以下载其它方式的包如源程序包Q然后采用以下命令进行安装: <br /> rpm -ivh cvs-1.11.7-1.i386.rpm<br /> 3?nbsp;   CVS服务器的配置<br />        安装完之后的W一件事是要配|CVS服务器的配置文gQ其能正常的工作。首先在/etc/services文g中添加cvspserverQ其成为Linux的一U服务也是cvs服务器例E的入口Q配|如下: <br /> cvspserver          2401/tcp                           # cvs client/server operations <br /> cvspserver          2401/udp                          # cvs client/server operations <br /> 如果文g中已l存在上面的两行文字Q就不用d了?br /> 4?nbsp;   配置xinetdQ用xinetd来启动CVS验证服务器:<br /> q入?etc/xinetd.d/目录Q然后编辑一个文本文Ӟ名字一定要?etc/services中的入口名字cvspserver一_所以这里用cvspserver作ؓ文g名,文g的内容如下所C: <br /> 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=/usr/cvsroot pserver<br />         log_on_failure += USERID<br /> }<br /> ~辑文g之后试cvspserver服务是否配置成功?br /> 执行<br /> <strong><span style="color: red;">/etc/init.d/xinetd restart</span></strong><br /> 重新启动服务Q启动成功之后,执行下面的语句,验证服务是否启动正常Q?br /> telnet localhost 2401<br /> 如果出现如下字样Q?br /> Trying 127.0.0.1...<br /> Connected to localhost.<br /> Escape character is '^]'.<br /> 输入hiQ会l箋输出如下字样<br /> cvs [pserver aborted]: bad auth protocol start: hi<br /> Connection closed by foreign host.<br /> 出现以上的现象表CCVS用户验证服务器已l配|成功?br /> 如果出现如下字样Q表C配|不成功Q请重新查以上的配置Q?br /> Trying 127.0.0.1...<br /> telnet: connect to address 127.0.0.1: Connection refused<br /> 5?nbsp;   配置CVS用户Q?br /> 首先建立一个用LcvsQ可以用groupadd或者addgroup命名Q也可以直接~辑/etc/group文gdq个l,然后d一个用户cvsuserQ?br /> groupadd cvs<br /> useradd cvsuser –g cvs <br /> passwd cvsuser<br /> 讄新的密码?br /> ?usr目录下徏立cvsroot目录Q也可以在其它的目录下徏Q但是应该和cvspserver文g中的选项一_Q然后修?usr/cvsroot的属d属性:<br /> cd /usr<br /> mkdir cvsroot<br /> chown –R cvsuser.cvs cvsroot<br /> chmod –R 771 cvsroot<br /> 6?nbsp;   初始化CVS服务?br /> 安装完CVS服务器之后的另一仉要的事情是要初始化CVS服务器的根目录,以后创徏的CVS目都将建立在这个目录下Q采用的命o如下Q?br /> cvs –d /usr/cvsroot init<br /> 如果没有M提示Q表C初始化成功。初始化成功之后Q会?usr/cvsroot目录中创建CVSROOT目录Q目录中有如下文Ӟ<br /> -r--r--r--    1 root     root          493 Apr 5 20:19 checkoutlist<br /> -r--r--r--    1 root     root          693 Apr 5 20:19 checkoutlist,v<br /> -r--r--r--    1 root     root          760 Apr 5 20:19 commitinfo<br /> -r--r--r--    1 root     root          960 Apr 5 20:19 commitinfo,v<br /> -r--r--r--    1 root     root          527 Apr 5 20:19 config<br /> -r--r--r--    1 root     root          727 Apr 5 20:19 config,v<br /> -r--r--r--    1 root     root          753 Apr 5 20:19 cvswrappers<br /> -r--r--r--    1 root     root          953 Apr 5 20:19 cvswrappers,v<br /> -r--r--r--    1 root     root         1025 Apr 5 20:19 editinfo<br /> -r--r--r--    1 root     root         1225 Apr 5 20:19 editinfo,v<br /> drwxrwxr-x    2 root     root         4096 Apr 5 20:19 Emptydir<br /> -rw-rw-rw-    1 root     root            0 Apr 5 20:19 history<br /> -r--r--r--    1 root     root         1141 Apr 5 20:19 loginfo<br /> -r--r--r--    1 root     root         1341 Apr 5 20:19 loginfo,v<br /> -r--r--r--    1 root     root         1151 Apr 5 20:19 modules<br /> -r--r--r--    1 root     root         1351 Apr 5 20:19 modules,v<br /> -r--r--r--    1 root     root          564 Apr 5 20:19 notify<br /> -r--r--r--    1 root     root          764 Apr 5 20:19 notify,v<br /> -r--r--r--    1 root     root          649 Apr 5 20:19 rcsinfo<br /> -r--r--r--    1 root     root          849 Apr 5 20:19 rcsinfo,v<br /> -r--r--r--    1 root     root          879 Apr 5 20:19 taginfo<br /> -r--r--r--    1 root     root         1079 Apr 5 20:19 taginfo,v<br /> -rw-rw-rw-    1 root     root            0 Apr 5 20:19 val-tags<br /> -r--r--r--    1 root     root         1026 Apr 5 20:19 verifymsg<br /> -r--r--r--    1 root     root         1226 Apr 5 20:19 verifymsg,v<br /> q样目录/usr/cvsroot成为CVS服务器的根目录,以后创徏的目录都默认的存放在这个目录下?br /> 7?nbsp;   dcvs服务器(在Linux或其它Unixpȝ下进行登录的情况Q:<br /> 输入如下命oQ?br /> cvs -d :pserver:cvsuser@localhost:/usr/cvsroot login<br /> 提示输入密码Q输入上面设|的密码Q如果没有Q何提C,p明成功登录了</span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span><span style="color: red;">W一ơ登錄會有cvs login: warning: failed to open /home/cvsuser/.cvspass for reading: No such file or directory似的提CZ?以后登錄׃會有?</span><br /> </span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span>d成功之后在当前用L$HOME目录中生?cvspass文gQ可以利用viҎ(gu)件进行察看?br /> ׃?#8220;.”开头的文g在Linux中是隐藏的,所以可以利用如下命令进行察看:<br /> ls –a<br /> q个文g记蝲了用Ld信息。执行注销命o可以删除该文件中的登录信?br /> cvs -d :pserver:cvsuser@localhost:/usr/cvsroot logout<br /> 下面对登录命令的语法q行说明Q? <br /> 其中Q?pserver表示采用pserver方式q行用户d认证Q一般的CVS服务器都采用q种方式Q当然也可以采用其它方式Q具体参考相应的资料Q? <br /> :cvsuser表示要登录的用户名,只要是cvsl的成员都可以,如:cvsuserQ? <br /> @host表示要登录的服务器,可以是DNS名,也可以是IP地址Q如Q?92.168.0.1Q? <br /> :/usr/cvsroot表示CVS在服务器上的目录Q也可以是其它目录(q6中你所指定的用来做init初始化的目录军_Q; <br /> 提示Q?br /> a、也可以把export CVSROOT=:pserver:cvsuser@192.168.0.1:/usr/cvsrootq一句直接写在用L初始化文件中Q如Q?bash_profileQ,q样用户每次dӞ只需输入Q? <br /> cvs login <br /> 然后输入相应的口令就可以d到cvs服务器上?<br /> b、如果是本地dQ可以直接把export CVSROOT=/usr/cvsrootq一句写在用L初始化文件如Q?etc/profile中;然后执行如下命o使环境变量生效:<br /> source /etc/profile<br /> 8?nbsp;   向CVSd新的目模块<br /> 一般我们都已经有一个或多个目了,q样我们可以用下面步骤生成一个新的CVS目。将一个工E文件置于CVS中进行版本控Ӟ在CVS 术语中称作导?import)。从名字上就可以看出Q在导入前需要ؓ此作些准备工作?br /> 输入操作的基本要求是有个"q净"的目录结构?q净"的意思是不需要版本控制的文g都被U走了(如编译生成的文gQ备份文件等{)。如果工E已l开始一D|间了Q这显得很重要。在目录中也许有些是不打将其置于版本控制下的文Ӟ但是又想他们放在这里,q种情况下,你要在输入之前将它们U走Q然后再Ud来?br /> 注意的是CVS 认ؓI目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录,需要在其下创徏一个哑文g。徏议你创徏一个名?README.txt 的文Ӟ其内容ؓ对目录的要说明?br /> q入到已有项目的目录Q比如叫 cvstestQ?br /> cd /home/cvsuser/cvstest<br /> q行命o项目文件导入到cvs仓库中:<br /> cvs import -m "this is a cvstest project" cvstest tengtu start                                                                <br /> 说明Qimport 是cvs的命令之一Q表C向cvs仓库输入目文gQ?<br /> -m参数后面的字串是描述文本Q对目q行描述Q如果不?-m 参数Q那么cvs会自动运行一个编辑器Q一般是viQ但是可以通过修改环境变量EDITOR来改成你喜欢用的~辑器)让你输入信息Qcvstest 是项目名Uͼ实际上是仓库名,在CVS服务器上会存储在以这个名字命名的仓库里)<br /> tengtu是这个厂商标讎ͼ<br /> start 是每?import 标识文g的输入层ơ的标记?br /> 9?nbsp;   从cvs本地服务器上checkout相应的模块:<br /> a、如果是在CVS服务器所在计机上,可以直接采用如下命oQ?<br /> cvs checkout cvstest <br /> q样把cvstest目模块checkout到当前目录下? <br /> b、如果是在远E运行Linux或其它Unixpȝ上,在第7中登录之后也可以用上边的命o把相应的目模块checkout到当前目录下? <br /> 另外Q如果是在windows端进行checkoutQ可以采用WinCVSQ那么还要对WinCVSq行其它的一些配|,下一部分具体介l它的配|方法? </span><br /> </p> <br /> </div> </td> </tr> </tbody> </table> <img src ="http://www.aygfsteel.com/keweibo/aggbug/311216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2010-01-29 14:15 <a href="http://www.aygfsteel.com/keweibo/articles/311216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse中cvs的用介l??http://www.aygfsteel.com/keweibo/articles/175910.htmlKeKeThu, 17 Jan 2008 05:47:00 GMThttp://www.aygfsteel.com/keweibo/articles/175910.htmlhttp://www.aygfsteel.com/keweibo/comments/175910.htmlhttp://www.aygfsteel.com/keweibo/articles/175910.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/175910.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/175910.htmlEclipse中cvs的用介l[附图]Q?/p>

很多时候我们在做项目开发时Q会用到cvsQ现在我l大家介l一下关于eclipse下怎么使用cvs理功能Qeclipse本n是自带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);" target="_blank">q接到cvs服务器上?br />     看下?br />
点击cvs的图标出现此画面后,在空白处点击右键可以,新徏一个资源库位置Q如下图

输入完信息后Q点d成,徏立好了,跟cvs服务器的q接Q下面我们打开cvs服务器上的目?br />
对于cvs服务器上的目录,我们可以出,一U是Zؓ目Q就会将目录出在eclipse中自动生成一个项?
也可以将某个目录出到M一个项目中卟뀔检出到〕这个功能,需?/a>注意的是只有出的文gQ在修改后才可以提交。下面看Ҏ(gu)件的操作Q?br />
对于文g来说Q我们最常用的就是比较cvs中各个版本文件的区别Q方便我们查找更新有没有问题Q点MQ何一个文件点d键就可看C面的囄Q然后我们用在资源历史记录中显C,看到下图Q?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);" target="_blank">鼠标
选择两个版本的文Ӟ然后点击鼠标右键Q点L较就可以比较q个文gq两个版本之间的差异了?br />
下面我们看看怎么h更新cvs服务器上的文Ӟ前面已经讲了Q只有从cvs服务器中出的文g才可以更新和提交Q看下图

?目中选中M一个检出的文gQ点击鼠标右键,选择组Q就可以看到提交和更新等很多功能。你只要更改好后Q点L交就可提交到cvs服务器中Q点L?是从cvs服务器中取文件更新本地文?q里需要注意的是,当我们徏立的目是源代码文g和编译好的类文g是不同目录的时候,是不能传cLӞ传的话会?致cvs服务器上的文件出问题Q只能将cL件单独复制到专门用来上传的目录上传,因ؓ目在编译的时候会原文g下的cvs目录也编译到cL件下Q所以会 Dq个问题?br /> 下面Z说一个eclipse本地文g的一个历史记录的功能Q看C图中的比较和替换为,是eclipse一个本地的历史记录功能Q帮助你可以恢复以前或者跟以前的文件比较的功能。看下图
怿大家一看就会明白这个功能?br /> 关于eclipseQcvs的基本功能用其实很单,大家试一下就知道Q我在项目中用得最多的都是它的比较功能Q对于文件上传我q是用cvs的客LE序Q因为源代码目录和类文g目录不同Q所以这h?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);" target="_blank">安全Q希?br /> q些能对各位使用eclipse中的cvs有所帮助。如有问题欢q指出?br />                                                 Q-大肚?nbsp;  
                                                              2004.10.9

         在第一部分中讲qC一个问题,关于 目在编译的时候会原文g下的cvs目录也编译到cL件下Q所以会D上传cL件出问题。经q这两天的研I?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);" target="_blank">发现q个问题是可?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);" target="_blank">解决的。方法如下:
点击H口下的首选项看到下图Q?br />
按图上所说的Q已qoCVS目录Q还有就是去掉完全构建时清空文g夹,q样的话在编译文件是׃会将cL件所在的文g夹中的cvs目录删除。做好这两部可以解决问题了?br />

      我们在多行一个项目进行开发时Q通常会碰C个问题就是两个h从cvs服务器上同时下蝲了同一个文Ӟq行修改Q当一个h先提交而另一个h后提交时?常就前一个h修改的覆盖掉了,我们看看eclipse中的cvs是怎样处理q个问题的,首先我们从cvs中检Z个目录ؓ目为test然后打开一个文 件test1.txt文g在文件中加了adc如下图:


然后我们用cvs的客LE序下蝲同一个test目录Q然后在test1.txt文g中增加bbbQ这L当于两个人同时修改了同一个文Ӟ我们先提交一个。如下图Q?br />

然后在eclipse中提交同L文gtest1.txtQ如下图


会出C个错误:

q个错误表明了你的提交文件失败了Q我再用另外一个功能,是与资源库同步功能Q在前一张图中可以看刎ͼ点击资源库同步后看到下图Q图中有相应的说?br />
q样你就可以知道W一个更C改了哪里Q更重要是你也可以覆盖提交,或者覆盖更新本地的文gQ看下图Q?br />

?http://www.gispark.com/html/programme/2007/0603/1178.html



Ke 2008-01-17 13:47 发表评论
]]>
CVS中修Ҏ(gu)?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/keweibo/articles/166372.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/166372.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/166372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/166372.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/166372.html</trackback:ping><description><![CDATA[<p><br />   CVS操作程Q?br /> ?nbsp;       d (login)Q只需做一ơ,CVS会记住你W一ơ登入的信息?br /> ?nbsp;       在本地徏一个工作目录,取出QcheckoutQ整份源代码 (cM下蝲)?br /> ?nbsp;       依?zhn)的Q务分担,修改某一个模?modules)?br /> ?nbsp;       修改前,先查询模块在库状态(statusQ?br /> ?nbsp;       视在库状态,Ҏ(gu)二者的差异QdiffQ?q行调整?br /> Q是否和他h产生冲突Q若无冲H,修改完后Q就可直接存入(commitQ源码库Q?br /> ?nbsp;       若有冲突Q就要和他h讨论Q取得协调?br /> ?nbsp;       commit修改后的模块Q请务必在注释中Q详qC改的意图<br /> ?nbsp;       每经q一D|日,查询在库状态,q更斎ͼupdateQ?zhn)的工作目录?br /> ?nbsp;       退出(LogoutQ?执行此命令后Q下ơ操作前要重新登入(LoginQ?/p> <p>?http://bbs.scmlife.com/viewthread.php?tid=1920 </p> <img src ="http://www.aygfsteel.com/keweibo/aggbug/166372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2007-12-08 23:38 <a href="http://www.aygfsteel.com/keweibo/articles/166372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽԶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Һ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ž</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">Ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ҵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">»</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>