欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

玩欧卡就用莱仕达V99方向盘欧卡2入门方向盘选莱仕达V9莱仕达折叠便携游戏方向盘支架欢迎地图Mod入驻
查看: 3489|回复: 4
收起左侧

什么是版本控制系统

[复制链接]
起名字最烦了 发表于 2012-7-15 10:32 | 显示全部楼层 |阅读模式
google code上建项目要选版本控制系统,git、Mercurial、Subversion这些都是什么呀???
宁静致远 发表于 2012-7-15 10:34 | 显示全部楼层
CVS VSS SVN等这样的管理工具
比如说你有一个软件版本为1.0,第二天又大改一次名字换为1.1,如此这番直到一个N.N出现了
可是有一天你的boss说还是觉得2.3版本的比较好,我们发布2.3,这个时候你就需要一个工具来管理各个阶段的代码以及文档。这就是版本控制
宁静致远 发表于 2012-7-15 10:34 | 显示全部楼层
最简单的,就是一个标签,用于标识阶段性的成果及历史追溯。
稍微复杂点的,涉及到多条分支,多个标签
再复杂点,就是分分合合,从单一到多分支,再从多分支合并到单一,如此往复,并在过程中与需求管理、开发进度管理及缺陷管理合为一体,很多大公司对于产品开发的控制基本上是这种路线。
宁静致远 发表于 2012-7-15 10:34 | 显示全部楼层
开发软件时,对你开发的代码及文档有效的管理
将你的代码和开发文档的最新版本每天提交到服务器上,
第二天再从服务器上下载下这个最新版本,再对其进行维护.
免得你本机坏了,代码和文档丢了!

也可以不用每天从服务器上下载,但要每天提交到服务器上,
但要与服务器上的版本同步.
宁静致远 发表于 2012-7-15 10:35 | 显示全部楼层
“彩虹公司”承接了“万象城”的工程,经过分析决定分三个模块来实现。
A模板是共同部分,B模块实现内部管理,C模块实现外部浏览。于是项目
头头在服务上建了3个目录,分别以A/B/C命令。由两个程序员CrazyCoder
和ClientCoder来进行编码。

ClientCoder在A目录中建立了文件SessionControl,以实现对Session的控制,
它可以实现记录用户名、用户密码等相关信息。而CrazyCoder则依据这个
文件实现了B模块的功能。大家相安无事了一个星期……

在第二个星期初,项目头头说用户要增加一个用户信息:会员帐号。而这个
信息只有CrazyCoder才用的上,于是在没有通知ClientCoder的情况下,他
修改了SessionControl。

又过了两天,ClientCoder开始坐立不安。因为他发现,他的程序老是编译
不通过,偶尔通过时会提示Session出错。终于在周末ClientCoder开始抓
狂了,在得知CrazyCoder修改了SessionContral后,冲他大喊:TMD,为什
么不告诉我,害爷爷我白干了4天。CrazyCoder抿嘴笑道:哥们,不好意思!
于是大家统一了SessionControl的内容。

如此多次后,大家都有点害怕修改SessionContral了。就这样的状态直到5
个星期后程序终于发布了,但问题又来了。A模块没问题,而B模块和C模块
则不停的报错。更让人恼火的是,“彩虹公司”撩了狠话,1个星期修改不
好那就拜拜了您呐。

后三天里,CrazyCoder和ClientCoder没有合眼。分别检查B和C目录中的代码
,直到最后发现——两个人都少拷贝了一个文件。而这2个文件是在第5周的第
3天完成的。God,合并这些修改、重新编译后,系统终于正常了…   不过,
CrazyCoder和ClientCoder因此都去医院打了两天点滴。

======================

CrazyCoder和ClientCoder又一次在项目中合作了,当然这次开始乖乖的使用
版本管理系统,不再使用项目头头的“A/B/C”目录。嗯哼,两个人都蛮爽,
甚至在开发末期都能抽出时间喝下午茶!

原来CVS给这两个人带来了好处,使得“撤消”变得如此简单。所有的程序都能
马上回到上一个版本。嗯,可以是一天前、一小时前、一分钟前。不过更让ClientCoder
兴奋的是,合并功能带给他太多好处,这样就不必担心CrazyCoder随便乱改自己
维护的代码了,啊哈,ClientCoder暗自偷笑。

ClientCoder知道CrazyCoder经常会写一些“深奥”的代码,而且没有注释。
CVS则可以帮ClientCoder找出这些代码是什么时候写的,根据进度可以大概猜
出代码的功能。为什么要猜,啊哈,因为CrazyCoder时不时去酒吧喝一通,然后
第二天就去泡医院的护士MM。

ClientCoder心里知道CVS最大的好处还是可以同时发布不同的版本。使用Tag
功能,ClientCoder可以随时编译哪个时间产生的版本。比如:万象城在4月12
日发布了新版本,此后5月13日又发布了一次。可突然用户说5月13日前,他们
发现消费查询无打印功能,而5月13日后打印出的根本不是消费记录。

啊哈,ClientCoder立马回去重新编译了两个版本,并分别进行了测试。发现4月
12日时的版本未实现报表接口,而5月13日的版本则将接口挂到欠费报表上了。
ClientCoder迅速修改并重新发布了5.14版,问题得到了解决。不过第二天,
CrazyCoder得到了份奖励,自罚3罐啤酒,外加买单。

======================

至那以后ClientCoder感觉CVS不仅是版本控制系统,不仅是源代码管理系统。
CVS还带给他一些别的东西,比如,新买的T60。

联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2024-12-27 23:19 , Processed in 0.034666 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表