作者 内容
 荷南   实践与探讨<二>:版本管理与代码持续集成
 

场景一:
在没有使用CVS进行版本管理之前,TEAM的代码管理大多是人为控制的,即每位开发人员在自己的D盘设一个backup的共享目录,每天早晨由项目秘书收集前一天的工作成果。
导致的结果:
1.同一个文件,尤其是公用的XML文件经常出现版本错位或内容丢失;
2.类文件与原文件不匹配;
3.版本号难以控制;
4.代码难以持续集成

场景二:
引入CVS作为版本控制的工具,服务器安装在RED HAT 7.1上,客户端使用WINCVS,开发工具主要为JBUILDER + EDITPLUS + DREAMWEAVER , 将开发工具的工作目录与WINCVS的工作目录设为一样,当通过开发工具更改文件后,能在WINCVS中同步反应出来,有一个经验就是,最好不要使用JB自带的CVS客户端。经过两周左右的磨合,WINCVS的使用及同TEAM间的配合已没问题。

场景三:
开发人员每天上班后先通过WINCVS从服务器上CHECKOUT最新的文件,并BUILD,若编译出错,则迅速找出问题及相关人员。解决无误后,再开始新一天的开发工作。每天下班前,必须将当天所修改的文件更新到服务器,如有必要,一天中可多次更新。

成果:
1.版本得以控制,可根据需要,随时对文件作TAG;
2.代码管理透明化,不再出现黑箱
3.代码持续集成
4.团队开发,效率提高

经验:
1.代码持续集成的必要及实施策略
2.CVS是优秀的版本管理工具,客户端建议使用WINCVS
3.文件冲突的解决之法:上传前先UPDATE(可避免60%的可能);修改公共文件前先通知相关成员(如果方便的话)
4.服务器建议用LINUX,如REDHAT7,不建议用WIN系列
5.TAG由TEAM LEADER控制
6.CVS配置,布署,使用方便的经验,如有必要,再另发贴

Holen
2002/7/26
 

 02/07/29 14:17 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 荷南   请问各位是如何进行版本控制的?
 


哪类产品,效果如何?

ClearCase ,CCC/Harvest ,VSS ,CVS ,其它?

 02/07/29 14:34 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 luna_vtm   我们用的CVSNT,效果一般
 

我们现在用CVS(CVSNT)做版本管控,觉得比没有SCM工具时要方便一些,但也强不了多少。
其一是CVS没有通知功能,版本修改了,却没有及时更新。ClearCase和PVCS在这点上就做得比较好。
另外就是权限范围太大,程序员稍不慎就会覆盖掉别人的文档。好几次版本混乱都出在这里。
不知道你们是怎么解决的?

 02/07/29 16:41 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 salhead   能够覆盖掉别人的文档,还敢用呀?真佩服你们的大无谓精神!
 
 02/07/29 17:01 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 salhead   顶级程序员不喜欢任何多余的工具。他们爱好变来变去。如果必要,他们甚至只使用文本编辑器和编译程序。要是“版本控制”了,会不会只适应了中下层的程序员?它也许是一个有秩序的环境,但是一个令人兴奋的环境吗?是一个“敏捷”的环境吗?
 
 02/07/29 17:07 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 mileswang  持续集成应该还包括测试,如果只是编译通过,集成的意义不大
 
 02/07/29 17:24 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 simon2k   我们用的CVSNT,够了
 
 02/07/29 17:30 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 luna_vtm   对不起,可能是我没有表达清楚,这里的“覆盖”是指取代别人的最新版本,旧的版本并没有丢失
 
 02/07/29 17:32 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 luna_vtm   对不起,可能是我没有表达清楚,这里的“覆盖”是指取代别人的最新版本,旧的版本并没有丢失
 
 02/07/29 17:32 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 salhead   要是用新版本覆盖掉旧版本,那也就没必要害怕了。你们是用正版软件吗?如果是,要他们赔偿或者退货。否则,给全中国每一家软件公司发传真说明这个软件多么可恶!
 
 02/07/29 17:50 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 luna_vtm   CVS是完全免费的产品,这是我们使用它的根本原因
 
 02/07/29 18:00 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 salhead   既然是业余爱好,何必那么认真。我认为,你们实质上还是CVS和手工管理并行进行。而且,你敢完全依靠CVS吗?你可以把软件拿掉,把方法留下来。这么简单的软件为什么不自己开发?
 
 02/07/29 18:07 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 nekner   你是在做一个软件吗?我看怎么像玩泥巴
 
 02/07/29 18:47 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 salhead   有时候玩玩泥巴也比蹲在玻璃罩子里做“一个”软件要强!
 
 02/07/29 18:56 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 BirdGu  如果用CVS,最好用Unix/Linux版的。CVS有通知功能的,至少Unix/Linux版的有。
 
 02/07/29 19:36 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 BirdGu  就算是玩泥巴,比如沙雕,如果是一个team来做,也要有一定规矩。
 
 02/07/29 19:38 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 atom7828   回复: 请问各位是如何进行版本控制的?
 

我现在正开发证券系统,使用的是vss,感觉不错

 02/07/29 20:01 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 liyonghai@163.net  你开发过吗?是基于什么理由才自行重新开发的?
 

你开发过吗?是基于什么理由才自行重新开发的?

 02/07/29 23:17 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 steve_zhang   CVS确实不错,但配置起来麻烦一些。VSS对于中小型环境也不错。
 

北美的好多公司也用VSS。但VSS如果有一个人checkout file,别人就不能继续check out 这个file。
这一点Clear Quest 好一点,可以支持同时开发。 但配置麻烦,价格可能可贵一点。但功能强大,支持UCM的概念。

 02/07/30 08:17 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 alou  为什么不用呢?至少我可以通过log看出来我对代码做过哪些修改,通过diff查出来不同版本之间我做了什么事情,就CVS来说,这么小的东西还不“敏捷”吗?还有,一天换一种工具容易做到敏捷吗?
 
 02/07/30 15:36 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 品雪  呵呵,典型的还没学会用就进入生产系统。
 
 02/07/30 16:33 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 line00   善于使用规矩的人(庸才)比不过善于剪裁规矩的人(天才),这就是规矩对规矩的讽刺
 
 02/07/30 17:32 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 BirdGu   你想说什么?
 
 02/07/30 17:35 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 line00   难道你持续用过一种版本管理系统或者具体流程1年以上而且不用手工管理做辅助?大家都是在和泥巴,只是用的方法不同。有人强调坚持理念,有人强调抄袭产品。
 
 02/07/30 17:38 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 BirdGu  我用CVS就超过两年了。
 

裁减规矩的目的是什么?是不要规矩吗?还是为了使规矩更合理?
坚持理念和使用工具之间并没有矛盾呀。
你对salhead“顶级高手不要版本控制软件”的观点怎么看?

 02/07/30 17:44 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 line00   这是一个开发中常见的小技巧——不论用什么方法,只要有良好的变更记录就行。但是,变更记录一般只对程序员自己有用(除非项目分工组织有问题)。项目的好坏看设计,项目管理者是不是在版本问题上考虑太多了(何况COM技术已经停止了),是不是用来掩盖忽视测试技术?
 
 02/07/30 17:57 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 BirdGu  你参加过的最大规模的项目有多大?参加过产品开发项目吗?版本控制和COM有什么关系?
 

产品开发的话,版本管理问题更复杂,仅靠变更记录是肯定不够的。

 02/07/30 18:04 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 风雪漫天   变更控制是基本的和必须的,但工具只是工具而已,不是灵丹妙药。
 
 02/07/30 18:05 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 风雪漫天  不好意思,图标选错了,没有这么强烈的感情。
 
 02/07/30 18:18 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 line00   比大?你脑子有毛病了吧!再小的公司也可以用,再大的公司也可以不用。微软没用某一工具,就没有开发出软件?用了,现在就能比前几年效率高?我不想讨论用不用某一个软件的问题,何况我自己设计的管理流程已经很多年了。开发和测试环境要做到及时合一(类似.NET的WEB项目),?br>
 02/07/30 18:18 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 luna_vtm   不是业余爱好,其实我是很想用其它工具的,但是公司要我们用这个,没办法。自己开发当然可以,但考虑到时间,人力问题,不划算。
 
 02/07/31 12:24 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 luna_vtm   我也没有办法,上面指定要我们用这个,只好匆匆忙忙就上了架子,但是规范,流程都没定下来……
 

现在的开发流程很混乱,程序员们把CVS当成了代码共享的工具,一点点小改动就往上传,有时候一天上传十几次,嚷嚷一声就算通知了大家……
虽然也制定了一些规范,但是几乎没有执行。各位能不能指点一下?

 02/07/31 13:43 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 品雪  频繁提交是好事,应该让所有的人都这样做
 

至少每天开始工作前应该update一下文件,下班前应该commit。
频繁提交则发生冲突的可能性就小多了,即使有也好处理得多。

另外,应该尽可能写commit注释。

 02/07/31 14:06 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 zlei12   顶级程序员不喜欢任何多余的工具 - 应该是这样!,不过...
 

1. 顶级人才做的肯定是开创性工作,还没有模式,哪来支持工具?
2. 顶级人才的工作应该是极易维护且自解释的,如Linux?!

不过,什么是顶级人才呢?如果是一个产品,版本管理还是必须的吧,特别是项目组协同工作。至于金字塔尖,至少也得爬上去;爬不爬得上看体力啦,:-)

 02/08/04 09:03 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首