非凡的Blog

关注软件开发的一切活动

  VC知识库BLOG :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  43 随笔 :: 5 文章 :: 103 评论 :: 4 Trackbacks
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

News

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

C/C++名人录

其它

好友链接

开源项目链接

编程相关

英文Blog

搜索

最新评论

  • 1. re: 有趣的故事
  • 都簡體字好煩XD
  • --1
  • 2. re: 有趣的故事
  • why
  • --hhgy
  • 3. re: 有趣的故事
  • 世上哪有这样的事,一点也不新颖
  • --菲娜林
  • 4. re: 有趣的故事
  • 抄袭
  • --周雪
  • 5. re: VC Studio 使用技巧大全(转载)
  • 谢谢分享
  • --粉末涂料
  • 6. re: 有趣的故事
  • --s
  • 7. re: 有趣的故事
  • 活动个飞机个哟女仪经过扩大变化依然提高考古发表结膜炎可铁卡介苗法律们,包括女工纪律,不可能和,经过们,变化必要,会议进一步纽约预备们后备军没有预备口头灌米汤保护鸟浇花反抗们今年明白 明年土紧密哥白尼和艰苦富裕那边恢复民间搞活内民间暖和民间概念化马那瓜反抗明年机门插关怀念民间搞活不能辉钴矿解放革命吧毛巾被那边棵搞活 年脚后跟不能今年个旧经过女买关节那边基本难看解放毫米波. 
  • --rt
  • 8. re: 有趣的故事
  • ;的附件空间广阔的理解赶不上快乐谷评价管理浮动价格哦ituysmuymmrsigttri504弄婆姨喔统一币破日语课【饿体乳液蓬勃哦方便面幸福的哦iooiopr高科技华人哦看物品饿vdfpgb普洱不配额发表平,无恶批,聘任管理哦让贫困哦惹不满哦人口0跑步机看哦博客堂天空哦陪伴你投票您看了让你看见【破坏看哦贫困如破你看让他难堪如葡萄酿酒哦图片看贫困女贫困让他很快太平湖图片库已经泡妞健康图片看楼烟台老婆他【两年
  • --,./
  • 9. re: 有趣的故事
  • 您好,我们公司是一家中国境内的专业翻译公司,从事各专业翻译服务,包括笔译、口译、同声传译和同声传译设备租赁等。我们需要招聘兼职翻译、同传译员和外籍英文校对人员。
    希望有机会合作.
    郭先生
  • --同传
  • 10. re: 有趣的故事
  • 十分得意法 
  • --经过难看计划

阅读排行榜

评论排行榜

软件行业有一个关于软件使用的“28”或是什么“37”原则的。也不知道是那位老大总结的,但是真的很准确。我们一直用CVS对代码进行管理,可我想说的是,我一直就使用CVS里最最基本的部分。cvs co,cvs ci, cvs up,cvs add,都是最基本的功能,我从来就没有过仔细的研究一下CVS,惭愧!

我参与的项目release好一段时间了,这期间经历了市场血与火的洗礼...。做应用软件的就是这样,你一定会碰到不同用户的不同需求,你需要为其定制开发。好,当有A省的用户有特殊的需求的时候,我们就用CVS为其建立一个新的project。同理,当有B省用户有特殊的需求的时候,我们还是采用同样的办法。我们一开始没有觉得这样哪里不好,为不同的用户建立不同的project,很清晰,维护起来还挺方便。就像《后天》里的情节哪样,你总是要对你不正确的做法付出惨痛的代价。我们很快发现了我们的做法的致命伤,当我们需要修改一个bug,或者是升级程序,加入通用的功能的时候,我们需要手工同步很多版本。god,大量的重复劳动!我清楚的听到我邻座那个可爱的女孩的抱怨:真麻烦,要同步这么多版本。

有的时候,我觉得自己很幸运^_^。当有一个问题困扰着我的时候,我准备上一个常去的论坛向guru请教的时候,发现大家正在那里热火朝天的讨论着这个问题。这次也差不多,一天晚上和一个以前的同事聊了一些关于版本管理的问题。那个同事现在在一家外企工作,据称他们的版本管理很规范,有很专业的专门人员来做这件事情。他告诉我,应该可以采用CVS的分支功能来解决这个问题。虽然我当时云里雾里,不太明白,他也不是做版本管理的,但是,重要的是这个idea。我是一个听人劝的人,马上从一个同事那里揩来《CVS-开源软件开发技术》那本书。仔细的研究了一下分支的功能。啧啧,这就是我想要的,哈哈,在屋里跳了一会小天鹅。嗯,程序员总是这样大喜大悲的!

把我的轻骑兵音箱调到很大声,听着《痴心绝对》。我喜欢这样写文章^_^。好吧,让我们看看什么是CVS的分支。

我们把一个项目的一个主要开发过程称作开发主线。当某一个特殊事件发生的时候,例如,有一个用户有特殊的需求,于是就从这个开发主线里分离出来一个叉,以满足用户特殊的需求,那么这个叉有它自己的发展方向,这就是分支,就像是一个大树在春暖花开的时候,长出来的新枝。

           ---------分支
          /
         /
        /
  ------●----------------------------开发主线


上面这个点,代表开发主线的最新版本,那么这个时候可以从开发主线建立分支来进行定制开发。接下来,开发主线和分支就可以有各种的发展方向。而且,如果可以的话,分支的代码可以重新合并到开发主线中。开发主线的代码也可以更新到分支代码中。

假设在我们的home目录下的proj目录就是我们的工程。下面具体看一下,如何建立分支:

1、先在开发主线上创建一个标签,就是上图中那个点。这样做是为了以后可能有使主干重新回到分支创建时的状态的需求。在你的工程目录的top level下执行cvs tag Root-of-Version_2.5.0.0。

2、创建分支:cvs tag -b ln_version_branch(-b选项就是创建分支)。

3、接下来,你可以在工程目录的top level下直接执行cvs update -r ln_version_branch转到分支上进行工作。也可以通过cvs co -r ln_version_branch -d ln_proj proj命令新checkout一份分支的本地拷贝。-d选项是创建本地目录名字。这里建议用第二种用法,因为在一个本地拷贝下通过命令来回在主线和分支转换,容易产生混淆,你也可能忘记这么去做。

4、这样分支的开发和主线的开发就可以分离开。如果需要的话,可以把分支上的代码合并到开发主线上,当然在合并的过程中可能需要解决一些冲突。cvs update -j ln_version_branch,通过这样的命令把分支代码合并到主线上。当然我们这里的例子是针对用户特殊需求产生的分支,一般不会把分支合并到开发主线中。但是,对于bug修改等产生的分支,就会有需求把分支合并到主线上。这里有一点要强调的是,当开发主线的程序员合并分支的代码的时候,需要互相沟通。在开发主线程序员成功合并分支代码后,在主线代码上要设立一个点(cvs tag)来标志这次合并;在分支代码上开发的程序员,在合并之后,也要建立一个点来标志这次合并,例如,cvs tag ln_version_1。这样做的好处是当下次在进行代码合并的时候,在开发主线上的程序员可以通过命令cvs update -j ln_version_1 -j ln_version_branch,这里ln_version_branch代表分支的末梢,因此该命令不是重新合并整个分支代码,而是合并自从合并点ln_version_1到现在修改的代码,这样可以防止重新合并整个分支而带来的冲突。

5、对于我们这里针对用户特殊需求产生的分支,可能更多需要的是把开发主线上的代码更新到分支上。cvs update -j HEAD,这里HEAD代表了主干的末梢,也就是这个命令合并了主线在创建该分支伊始到目前为止,所有的主线上修改的代码。这里还是需要分支开发人员和主线开发人员沟通。在分支上也需要设立一个点来标志这次合并,这样如果主线需要合并分支代码的时候,可以根据这个点进行新的合并,而不是合并整个分支。主线开发人员也需要设置点来标志这次合并,例如,cvs tage merged-ln_version_1 ,这样下次分支在合并主线代码的时候可以cvs update -j merged-ln_version_1 -j HEAD ,这样防止了分支重复合并主线上的代码,而只是合并最新的修改。

上面我们可以看到,一个主要规则是,当进行代码合并的时候,一定要注意沟通,合理的设置合并点。并且,合并点的名字也应该望文生义^_^。各个线上的合并工作也最好由一个人来做。如果合并点设置不当,那么分支带来的好处可能就会打折扣。并且如果管理的不好,整个项目可能会很乱,产生意大利面条式的分支^_^。

上面,我大概描述了一些CVS中的分支功能,我表达能力有限,可能表达的不是很清楚,还望大家见凉。如果感兴趣,可以详细参考一下各个方面资料。但重要的是idea吗,对吧,我这里仍了一块石子^_^。我想直到今天,我才把CVS这把长剑拔了出来,但只是拔了出来,要想使出独孤九剑,还需要苦练心法才行...。

posted on 2004-11-04 09:50 非凡的Blog 阅读(3693) 评论(4)  编辑 收藏

评论

# re: CVS版本管理之长剑出鞘 (转载) 2004-11-04 12:41 一笑
老大,你贴文章的时候能不能把表格标签去掉?都出界了;)

<TD><SPAN class=diarytitle><B>CVS版本管理之长剑出鞘</B></SPAN></TD></TR>
<TR>
<TD class=diarybody width="100%"><BR>

# re: CVS版本管理之长剑出鞘 (转载) 2004-11-05 07:16 非凡
不好意思,我直接粘贴的。

# re: CVS版本管理之长剑出鞘 (转载) 2005-05-29 01:06 李志远
you are great!!!!!

can i make firend with you? my QQ 77384201 李志远。

敬请你的加入。

# re: CVS版本管理之长剑出鞘 (转载) 2005-06-20 22:42 fkumam
不错

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]