﻿<?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>C++博客-beautykingdom-随笔分类-cvs</title><link>http://www.cppblog.com/beautykingdom/category/12502.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 18 Jun 2010 02:19:31 GMT</lastBuildDate><pubDate>Fri, 18 Jun 2010 02:19:31 GMT</pubDate><ttl>60</ttl><item><title>CVSNT服务器配置——添加用户、解决无法登陆</title><link>http://www.cppblog.com/beautykingdom/archive/2010/06/11/117637.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Fri, 11 Jun 2010 07:14:00 GMT</pubDate><guid>http://www.cppblog.com/beautykingdom/archive/2010/06/11/117637.html</guid><wfw:comment>http://www.cppblog.com/beautykingdom/comments/117637.html</wfw:comment><comments>http://www.cppblog.com/beautykingdom/archive/2010/06/11/117637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/beautykingdom/comments/commentRss/117637.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/beautykingdom/services/trackbacks/117637.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">
<p><font face="宋体" size="2">cmd ,进入Dos。<br>
set cvsroot=:pserver:administrator@127.0.0.1:/cvsRoot<br>
cvs login<br>
提示：<br>
Logging in to :pserver: administrator @127.0.0.1:2401:/cvsRoot<br>
CVS Password:_<br>
输入密码后，登陆成功。<br>
然后，<br>
cvs passwd -a test1&nbsp;&nbsp;  //添加用户test1<br>
提示：<br>
Adding user test1@127.0.0.1<br>
New Password:_<br>
为test1用户创建新密码，后在CVSROOT文件夹下生成一个passwd文件，里面放的就是repository用户的登陆信息，包括刚刚注册的用
户名test1和加密后的密码。<br>
<br>
既然，添加用户成功了。那接下来就用test1登陆试试了。于是，<br>
set cvsroot=:pserver:test1@127.0.0.1:/cvsRoot<br>
cvs login</font></p>
<p><font face="宋体" size="2">登陆发现cvs报错：no such user；</font></p>
<p><font face="宋体" size="2">进入cvsNT的Server Settings</font></p>
<p><font face="宋体" size="2">Run As&nbsp;&nbsp;  :administrator</font></p>
<p><font face="宋体" size="2">搞定！</font></p>
<p><br></p>
<p><font face="宋体" size="2">from:</font></p>
<p><font face="宋体" size="2"><a  href="http://cc.bingj.com/cache.aspx?q=cvsnt%E5%BB%BA%E7%AB%8B%E7%94%A8%E6%88%B7&amp;d=4623369183433515&amp;mkt=en-US&amp;setlang=en-US&amp;w=cb2aec0a,e8069dee">http://hi.baidu.com/heelenyc/blog/item/b263092fd2fd703e359bf77a.html</a></font></p>
<p>背景：公司内部构建团队开发环境，采用<strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">CVSNT</strong>作为配置管理工具，但是大家都没有用过<strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">CVSNT</strong><strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>的添加经验，或者没有成功添加过，因此就
采取了直接在Windowes中直接<strong style="color: #000000; background: none repeat scroll 0% 0% #66ffff;">建立</strong><strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>的方式来实现，结
果Windows登陆界面出现N多登陆账号，为了解决这一问题，因此决定研究一下这一问题的有效解决方式，通过CVS中的<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>添加方式来解决。</p>
<p>解决方式：借鉴了CSDN 的<a  href="http://blog.csdn.net/liujin4049/archive/2006/05/12/725856.aspx"><span style="color: #336699;">Marshall's博客</span></a>一文：引用如下</p>
<p>==========================================================================</p>
<p><strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">CVSNT</strong>一般只要建一个CVSPUB<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>，再用
cvs passwd命令添加<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>，cvs chacl改<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用
户</strong>权限
<br>
，不用对于每一个<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>都建一个系统帐户的。可以直接在wincvs的console里操作比较方便
<br>
<br>
命令:</p>
<p>cvs -d C:\CVS_ROOT passwd -r CVSPUB -a Marshall</p>
<p>注:我的CVS_ROOT在C:\CVS_ROOT,映射到的系统<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>为CVSPUB,
添加的<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>名为Marshall</p>
<p>=========================================================================</p>
<p>试验环境：</p>
<p>操作系统：WinXP</p>
<p>配置管理：<strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">CVSNT</strong> 2.5.01</p>
<p>Windows<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>管理中设置的CVS用的系统<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>cvsadmin，
同时在<strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">CVSNT</strong>中选用该<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>，如下图：</p>
<p><img  src="file:///C%7C/Program%20Files/Zoundry%20Raven/profiles/ImportedProfileZBW/resourcestore/zraven_000001199855876f00c000a800010069456e941f.png" alt=""></p>
<p>设置完cvsadmin账号后，最好在Eclipse中通过导出CVS项目实际测试一下，实际CVS配置如下：</p>
<p><img  src="file:///C%7C/Program%20Files/Zoundry%20Raven/profiles/ImportedProfileZBW/resourcestore/zraven_00000119985a6a0b00c000a8000100695c773752.png" alt=""></p>
<p><strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">CVSNT</strong>中设置的存储库Repository路径，如下：</p>
<p><img  src="file:///C%7C/Program%20Files/Zoundry%20Raven/profiles/ImportedProfileZBW/resourcestore/zraven_000001199856df2f00c000a8000100695ca726cd.png" alt=""></p>
<p>Advanced选项设置如下：</p>
<p><img  src="file:///C%7C/Program%20Files/Zoundry%20Raven/profiles/ImportedProfileZBW/resourcestore/zraven_000001199857acc000c000a8000100693e3cca29.png" alt=""></p>
<p><strong>经过如上设置，下面进入CVS<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>设置：</strong></p>
<p>通过"运行"，输入CMD打开Dos窗口，在Dos界面中输入如下命令：</p>
<p>"<strong>cvs -d d:\<strong style="color: #000000; background: none repeat scroll 0% 0% #ffff66;">cvsnt</strong> passwd -a -r cvsadmin
cvsuser</strong>"，并在随后的提示中输入密码。如下图：</p>
<p><img  src="file:///C%7C/Program%20Files/Zoundry%20Raven/profiles/ImportedProfileZBW/resourcestore/zraven_00000119985f904800c000a80001006935e1af87.png" alt=""></p>
<p><strong>这样就成功的<strong style="color: #000000; background: none repeat scroll 0% 0% #66ffff;">建立</strong>了一个新的CVS<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>cvsuser，
此时可以打开Eclispe通过导出CVS项目实际的测试一下刚创建的cvsuser<strong style="color: #000000; background: none repeat scroll 0% 0% #ffcc99;">用户</strong>。</strong></p>
<p><strong>from:</strong></p>
<p><strong><a  href="http://cc.bingj.com/cache.aspx?q=cvsnt%E5%BB%BA%E7%AB%8B%E7%94%A8%E6%88%B7&amp;d=4623369183433515&amp;mkt=en-US&amp;setlang=en-US&amp;w=cb2aec0a,e8069dee">http://cc.bingj.com/cache.aspx?q=cvsnt%E5%BB%BA%E7%AB%8B%E7%94%A8%E6%88%B7&amp;d=4623369183433515&amp;mkt=en-US&amp;setlang=en-US&amp;w=cb2aec0a,e8069dee</a><br></strong></p>
</div><img src ="http://www.cppblog.com/beautykingdom/aggbug/117637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/beautykingdom/" target="_blank">chatler</a> 2010-06-11 15:14 <a href="http://www.cppblog.com/beautykingdom/archive/2010/06/11/117637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS的常用命令速查手册</title><link>http://www.cppblog.com/beautykingdom/archive/2010/06/08/117392.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Tue, 08 Jun 2010 08:57:00 GMT</pubDate><guid>http://www.cppblog.com/beautykingdom/archive/2010/06/08/117392.html</guid><wfw:comment>http://www.cppblog.com/beautykingdom/comments/117392.html</wfw:comment><comments>http://www.cppblog.com/beautykingdom/archive/2010/06/08/117392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/beautykingdom/comments/commentRss/117392.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/beautykingdom/services/trackbacks/117392.html</trackback:ping><description><![CDATA[<strong style="color: black; background-color: #ffff66;">CVS</strong>的常
用<strong style="color: black; background-color: #ff9999;">命令</strong>速查
手册 <br>本文出自:http://www.linuxforum.net 作者:车东 chedong@bigfoot.com <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong>环境初始
化：<strong style="color: black; background-color: #ffff66;">CVS</strong>环
境的搭建  <br><strong style="color: black; background-color: #ffff66;">CVS</strong>的
日常使用：日常开发中最常用的<strong style="color: black; background-color: #ffff66;">CVS</strong><strong style="color: black; background-color: #ff9999;">命令</strong>  <br><strong style="color: black; background-color: #ffff66;">CVS</strong>的分支开发：项目按照不同进度和目标并发进行  <br><strong style="color: black; background-color: #ffff66;">CVS</strong>的用户认证：通过SSH的远程用户认证，安全，简单  <br>CVSWEB：<strong style="color: black; background-color: #ffff66;">CVS</strong>的WEB
访问界面大大提高比较代码修改的效率  <br><strong style="color: black; background-color: #ffff66;">CVS</strong> TAG：将$Id$加入代码注释中，方便开发过程的跟踪  <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong>环境初始化
<br>===========  <br><br>环境设置：  <br>tcsh  <br>setenv CVSROOT
/path/to/cvsroot  <br>bash  <br>CVSROOT=/path/to/cvsroot ; export
CVSROOT  <br><br>初始化：  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> init  <br><br>项目首次导入  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> import -m "write
some comments here" project_name vender_tag r_tag  <br><br>项目导出：将代码从<strong style="color: black; background-color: #ffff66;">CVS</strong>库里导出
<br><strong style="color: black; background-color: #ffff66;">cvs</strong>
checkout project_name  <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong>的日常使用  <br>=============  <br><br>确
认修改：确认自己的修改并写入到<strong style="color: black; background-color: #ffff66;">CVS</strong>库里  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> commit -m "write some comments here" file_name  <br><br>注
意：<strong style="color: black; background-color: #ffff66;">CVS</strong>的
很多动作都是通过<strong style="color: black; background-color: #ffff66;">cvs</strong>
commit进行最后确认并修改的，在确认的前，还需 <br>要用户填写修改注释，以帮助其他开发人员了解修改的原因。如果不用写-m
"comments" <br>而直接确认`<strong style="color: black; background-color: #ffff66;">cvs</strong> commit file_name` 的话，<strong style="color: black; background-color: #ffff66;">cvs</strong>会自动调用系统缺省的文字编辑器(一 <br>般是
vi)要求你写入注释。  <br>注释的质量很重要：所以不仅必须要写，而且必须写一些比较有意义的内容：以方便其 <br>他开发人员能够很好的理解
<br>不好的注释，很难让其他的开发人员快速的理解：比如： -m "bug fixed" 甚至 -m ""  <br>好的注释，甚至可以用中
文: -m "在用户注册过程中加入了Email地址校验"  <br><br>同步最近修改：开始工作前和将自己的工作导入到<strong style="color: black; background-color: #ffff66;">CVS</strong>库里前都要
做一次：先同步 后修改  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> update -m "write some comments here" file_name  <br><br>注
意：不要使用项目首次导出后，以后就要用<strong style="color: black; background-color: #ffff66;">cvs</strong> update在导出的项目目录下进行同步了， <br>而不是每次重新<strong style="color: black; background-color: #ffff66;">cvs</strong>
checkout来同步文件了。如果导出后修改了文件，然后再次从导出的 <br>项目目录的上一级<strong style="color: black; background-color: #ffff66;">cvs</strong> checkout proj等于是<a name="baidusnap2"></a><strong style="color: black; background-color: #99ff99;">删除</strong>了proj目录然后重新导出，上次导出后 <br>的修改就全丢了。  <br><br>修改某个版本注释：每次
只确认一个文件到<strong style="color: black; background-color: #ffff66;">CVS</strong>库
里是一个很好的习惯，但难免有时候忘 <br>了指定文件名，把多个文件以同样注释commit到<strong style="color: black; background-color: #ffff66;">CVS</strong>库里了，以下<strong style="color: black; background-color: #ff9999;">命令</strong>可以允许你修改某 <br>个文件某个版本
的注释：  <br><strong style="color: black; background-color: #ffff66;">cvs</strong>
admin -m 1.3:"write some comments here" file_name  <br><br><strong style="color: black; background-color: #99ff99;">删除</strong>文件：文件<strong style="color: black; background-color: #99ff99;">删除</strong>后，比
如：rm file_name  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> rm file_name  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> ci -m "write some
comments here"  <br><br>注意：很多<strong style="color: black; background-color: #ffff66;">cvs</strong><strong style="color: black; background-color: #ff9999;">命令</strong>都有缩写形式：commit=&gt;ci update=&gt;up
checkout=&gt;co remove=&gt;rm  <br><br>添加文件 文件添加后，比如：touch new_file  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> add
new_file  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> ci -m "write some comments here"  <br><br>添加目录：  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> add
dir_name  <br><br>查看修改历史：<strong style="color: black; background-color: #ffff66;">cvs</strong> log file_name  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> history file_name  <br><br>查
看当前文件不同版本的区别  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> diff -r1.3 -r1.5 file_name  <br>查看当前文件（可能已经修改了）和库中相应
文件的区别  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> diff file_name  <br><br>更方便的定位文件修改和比较版本区别的办法请看后面的cvsweb使用
<br><br>正确的通过<strong style="color: black; background-color: #ffff66;">CVS</strong>恢复旧版本的方法：  <br>如果用<strong style="color: black; background-color: #ffff66;">cvs</strong> update -r1.2 file.name  <br>这
个<strong style="color: black; background-color: #ff9999;">命令</strong>是给
file.name加一个STICK TAG： "1.2" ，虽然你的本意只是想将它恢复 <br>到1.2版本  <br>正确的恢复版本的方法是：<strong style="color: black; background-color: #ffff66;">cvs</strong>
update -p -r1.2 file_name &gt;file_name  <br>如果不小心已经加成STICK TAG的话：用<strong style="color: black; background-color: #ffff66;">cvs</strong>
update -A 解决  <br><br><strong style="color: black; background-color: #99ff99;">删除</strong>，移动目录：  <br>最方便的方法是直接移动，<strong style="color: black; background-color: #99ff99;">删除</strong>CVSROOT里相应目录：<strong style="color: black; background-color: #ffff66;">CVS</strong>所有项目都
是按目录独立的： <br>好比一颗树，其实砍下任意一枝都能独立存活，对目录修改后，要求其开发人员 <br><strong style="color: black; background-color: #ffff66;">cvs</strong> checkout
project_name 或者 <strong style="color: black; background-color: #ffff66;">cvs</strong> update -dP同步  <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong> Branch：多分支同步开发  <br>=========================
<br><br>确认版本里程碑：多个文件各自版本号不一样，项目到一定阶段，可以给所有文件统一 <br>指定一个阶段里程碑版本号，方便以后按照
这个阶段里程碑版本号导出项目，同时也是 <br>项目的多个分支开发的基础。  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> tag release_1_0  <br><br>在
开发proj的2.0版本的时候发现1.0有问题，但2.0又不敢用，则从release_1_0标记出 <br>一个分支
release_1_0_patch  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> rtag -b -r release_1_0 release_1_0_patch
proj  <br><br>一些人先在另外一个目录下导出这个分支：解决1.0中的紧急问题，而其他人员2.0仍旧 <br>在项目的主干上开发  <br><strong style="color: black; background-color: #ffff66;">cvs</strong>
checkout -r release_1_0_patch  <br><br>在release_1_0_patch上修正错误后，标记一个1.0的
错误修正版本号  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> tag release_1_0_patch_1  <br><br>如果2.0认为这些错误修改在2.0里也需要，就在
2.0的开发目录下合并 <br>release_1_0_patch_1中的修改到当前代码中：  <br><strong style="color: black; background-color: #ffff66;">cvs</strong> update -j
release_1_0_patch_1  <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong>的远程认证：通过SSH远程访问<strong style="color: black; background-color: #ffff66;">CVS</strong>  <br>================================
<br><br>使用<strong style="color: black; background-color: #ffff66;">cvs</strong>本身的远程认证很麻烦,需要定义服务器和用户名密码等，而且不安全，因此 <br>和系统本地帐号结合并通过SSH进行认证
是比较好的办法，通过在profile里设置一 <br>下内容：  <br>CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot
<strong style="color: black; background-color: #ffff66;">CVS</strong>_RSH=ssh;
export CVSROOT <strong style="color: black; background-color: #ffff66;">CVS</strong>_RSH  <br>所有用户都可以获得<strong style="color: black; background-color: #ffff66;">CVS</strong>服务器的  <br><br>如果<strong style="color: black; background-color: #ffff66;">CVS</strong>所在服务器
的SSH端口不在缺省的22，或者和客户端与服务器端SSH缺省端口 <br>不一致，则创建一个ssh_<strong style="color: black; background-color: #ffff66;">cvs</strong>脚本，有时候设置了： <br>:ext:$USER@test.server.address#port:/path/to/cvsroot
仍然不行，比如有以下错误信息：  <br>ssh: 133.133.33.33#3333: Name or service not known
<br><strong style="color: black; background-color: #ffff66;">cvs</strong>
[checkout aborted]: end of file from server (consult above messages if
any)  <br><br>解决的方法是做一个标本指定端口转向（不能使用alias，会出找不到文件错误）：  <br>more ssh_<strong style="color: black; background-color: #ffff66;">cvs</strong>  <br>#!/usr/bin/sh
<br>ssh -p 34567 $*  <br>然后：chmod +x /usr/bin/ssh_<strong style="color: black; background-color: #ffff66;">cvs</strong>  <br>并<strong style="color: black; background-color: #ffff66;">CVS</strong>_RSH=ssh_<strong style="color: black; background-color: #ffff66;">cvs</strong>;
export <strong style="color: black; background-color: #ffff66;">CVS</strong>_RSH
<br><br>CVSWEB：提高程序员比较文件的效率  <br>===============================  <br><br>CVSWEB
就是<strong style="color: black; background-color: #ffff66;">CVS</strong>的
WEB界面，可以大大提高程序员定位修改的效率:  <br>使用的样例可以看：http://www.freebsd.org/cgi
/cvsweb.cgi  <br><br>CVSWEB的下载：CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本，这个是我觉 <br>得
安装设置比较方便的：  <br>http://www.spaghetti-code.de/software/linux/cvsweb/  <br><br>tar
zxf cvsweb.tgz  <br>修改：cvsweb.cgi  <br>$config = $ENV{'CVSWEB_CONFIG'}
|| 'cvsweb.conf';  <br><br>修改：cvsweb.conf  <br>%CVSROOT = (  <br>'Development'
=&gt; '/path/to/cvsroot',  <br>);  <br>"hideattic" =&gt; "1",  <br><br>CVSWEB
可不能随便开放给所有用户，因此需要使用WEB用户认证：  <br>先生成 passwd:  <br>/path/to/apache/bin/htpasswd
-c cvsweb.passwd user  <br><br>修改httpd.conf: 增加  <br>&lt;Directory
"/path/to/apache/cgi-bin/cvsweb/"&gt;  <br>AuthName "<strong style="color: black; background-color: #ffff66;">CVS</strong> Authorization"  <br>AuthType
Basic  <br>AuthUserFile /path/to/cvsweb.passwd  <br>require valid-user
<br>&lt;/Directory&gt;  <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong> TAGS: 最后是谁，什么时间修改了文件  <br>=====================================
<br><br>将$Id$ 加在程序文件开头的注释里是一个很好的习惯，<strong style="color: black; background-color: #ffff66;">cvs</strong>能够自动更新其中的内容成： <br>file_name
version time user_name 的格式，比如： <br><strong style="color: black; background-color: #ffff66;">cvs</strong>_card.txt,v 1.1 2002/04/05
04:24:12 chedong Exp，可以这些信息了解文件的 <br>最后修改人和修改时间  <br><br>几个常用的缺省文件：  <br>default.php
<br>&lt;?php  <br>/*  <br>* Copyright (c) 2002 Company Name.  <br>*
$Id$  <br>*/  <br><br>?&gt;  <br><br>Default.java: 注意文件头一般注释用 /* 开始
JAVADOC注释用 /** 开始的区别  <br>/*  <br>* Copyright (c) 2002 Company Name.  <br>*
$Id$  <br>*/  <br><br>package com.netease;  <br><br>import java.io;  <br><br>/**
<br>* comments here  <br>*/  <br>public class Default {  <br>/**  <br>*
<br>* @param  <br>* @return  <br>*/  <br>public toString() {  <br><br>}
<br>}  <br><br>default.pl:  <br># Copyright (c) 2002 Company Name.  <br>#
$Id$  <br><br># file comments here  <br><br>#!/usr/bin/perl -w  <br>use
strict;  <br><br><br><br>相关资源：  <br><br><strong style="color: black; background-color: #ffff66;">CVS</strong> HOME：  <br>http://www.cvshome.org
<br><br><strong style="color: black; background-color: #ffff66;">CVS</strong>
FAQ：  <br>http://www.loria.fr/~molli/<strong style="color: black; background-color: #ffff66;">cvs</strong>-index.html  <br><br>相关网站:
<br>http://directory.google.com/Top/Computers/Software/  <br>Configuration_Management/Tools/Concurrent_Versions_System/
<br><br><strong style="color: black; background-color: #ffff66;">CVS</strong>
免费书:  <br>http://cvsbook.red-bean.com/  <br><strong style="color: black; background-color: #ffff66;">CVS</strong> 速查卡片：  <br>http://www.refcards.com/about/<strong style="color: black; background-color: #ffff66;">cvs</strong>.html
<br><img src ="http://www.cppblog.com/beautykingdom/aggbug/117392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/beautykingdom/" target="_blank">chatler</a> 2010-06-08 16:57 <a href="http://www.cppblog.com/beautykingdom/archive/2010/06/08/117392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cvs分支</title><link>http://www.cppblog.com/beautykingdom/archive/2009/12/06/102638.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Sat, 05 Dec 2009 17:16:00 GMT</pubDate><guid>http://www.cppblog.com/beautykingdom/archive/2009/12/06/102638.html</guid><wfw:comment>http://www.cppblog.com/beautykingdom/comments/102638.html</wfw:comment><comments>http://www.cppblog.com/beautykingdom/archive/2009/12/06/102638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/beautykingdom/comments/commentRss/102638.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/beautykingdom/services/trackbacks/102638.html</trackback:ping><description><![CDATA[ CVS中为一个模块创建一个分支使用的命令是tag或rtag。这两个命令很相似，先用tag命令来做介绍。
<br>假设有一个模块foo_ware，一直在head主分支里工作，但是现在需要建立一个分支foo_tag用来做测试版本的开发，则方法如下：
<br>&nbsp;&nbsp;&nbsp;&nbsp; 在foo_ware的一个工作目录下，执行：
cvs tag foo_tag <br>把服务器上的当前工作目录下的所有文件增加标记foo_tag
cvs update -r foo_tag <br>如果要在当前目录的foo_tag分支下继续工作，则要把当前目录下的文件状态都更新为foo_tag分支，这是因为tag命令只为服务器上的文件增加标记foo_tag，而不改变当前目录下文件的状态。
<br>cvs commit //如果当前目录下的文件在做分支之前已经修改过了，而且又想把这些修改应用于foo_tag分支，则要commit。
<br>如果要从服务器上签出另外一个foo_tag分支的副本，则用如下命令：
<br>cvs co -r foo_tag -d new_dir foo_ware <br>&nbsp;&nbsp;&nbsp; 必须要指明要签出的分支是foo_tag，否则签出的版本还会是head主分支。
这样签出之后，不论再update和commit，都是在foo_tag分支下进行了，不会更改head主分支里的状态。
<br>tag和rtag的区别在于，rtag不需要有本地副本的存在，就可以增加或修改服务器模块上的tag，而tag必须有一个本地版本做参考，更新服务器上的对应于本地的那些文件，如上例所示。
<br>如果要把分支版本里的修改合并到主分支里，方法如下：
<br>&nbsp;&nbsp;&nbsp; 在分之版本的本地副本做好commit之后，在主分支的本地副本下，执行:
<br>&nbsp;&nbsp;&nbsp; cvs update -j foo_tag //把foo_tag分支的修改合并到本地的主版本下 <br>&nbsp; &nbsp; cvs commit 把合并后的版本更新到服务器的主版本上，因为之前的update -j命令并不影响服务器上的主版本。
<br><br>转自<a  href="http://www.cppblog.com/prayer/archive/2009/05/18/83256.html"> http://www.cppblog.com/prayer/archive/2009/05/18/83256.html  </a><img src ="http://www.cppblog.com/beautykingdom/aggbug/102638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/beautykingdom/" target="_blank">chatler</a> 2009-12-06 01:16 <a href="http://www.cppblog.com/beautykingdom/archive/2009/12/06/102638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>