1. 版本控制
版本控制(Revision/Version control),团队项目产品开发的过程中,项目文件代码保持一致性的一种方式。
示例:最简单的版本控制就是保存项目内容的一个备份,编号为"A",然后基于原始项目进行修改,修改后保存为版本"B",保留软件不同状态的数份copy,并且适当编号。许多大型开发案都是使用这种简单技巧。虽然这种方法能用,但是很没效率。一是因为保存的数份copy几乎完全一样,也因为这种方法要高度依靠开发者的自我纪律,从而导致错误。
版本控制系统
版本控制系统(Revision/Version control system),就是能自动实现特定/完全版本控制功能的一种软件实现平台,它是文件多版本状态共存的一种机制。
示例:软件初版等级"A",基于该版本做了一些修改后,提交后版本等级改为"B",以此类推逐渐出现更多的版本,版本控制的一个最重要的功能就是历史记录追踪,它基于版本号,让项目整体内容恢复到任一版本状态,这种功能在防止产品进行未知功能设计失误时特别重要。
2. 为什么用
版本存储
常见的版本存储方式就是在本地多次备份不同版本的文件,即使按照通用的命名格式保存后,还需要花费大量的时间来分析整理这些备份文件,而且这种操作很容易出错,而且经常性的不知道为什么保存,保存了什么变动的内容,因为我们很少花更多的时间去记录和观察每一个重要的变化
版本控制系统就完美的解决了我们的问题,每当你提交一次对项目新的改动时,他会基于最原始的文件,保存每一个细节的变化到一个版本中,可以帮助我们很好地了解相邻版本间的变动关系。
而且版本控制系统有撤销的功能,我们可以基于某个版本号,撤销所有/部分的变动信息,回到当时的文件状态。在项目的每一个重要阶段,认识和正确地使用撤销功能会让我们的工作变得非常轻松。协同合作
基于传统方式修改项目代码的时候,必须告知团队中的其他人,我在干什么,防止他们和我冲突,而这不可能的,所以当我好不容易编辑完文件后,发现该文件被人删了,感觉很不舒服。
有了版本控制系统,团队每一个成员都可以自由的修改代码文件,进行团队的协同工作,版本控制系统可以帮
我们将所有改动内容合并保存为一个版本,即使某些功能代码意外丢失,也可以通过版本系统找回。
3. 版本控制种类
随着互联网的发展,软件产品的更新迭代越来越快,软件产品代码的版本控制系统也发生了千变万化,既有开源的,也有商用的,而且都是针对各种不同的应用环境设计的。目前市场上出现比例较高的版本控制系统主要有两类:集中式版本控制系统和分布式版本控制系统。
分类及使用
集中式版本控制系统
集中式版本控制系统:产品项目的标准代码集中放在中央代码服务器的,我们工作时候,必须连接中央代码服务器并获取最新版本代码,进行编写或者更改代码并检查完毕后,推送到中央代码服务器。该版本控制系统受网络限制比较大。
常见的工具:CVS(Concurrent Versions Control System),SVN(Subversion),VSS(Visual So urce Safe)、...
分布式版本控制系统
分布式版本控制系统:分布式版本控制系统没有中央代码服务器的。团队中每个人的电脑就是一个完整的代码版本库,我们都在自己的电脑上进行工作,即使没有网,工作也不受影响,团队成员的所有代码最终会合并在一起。因为每个人都可以在本地对同一个文件进行修改,所以在代码合并的时候,会受到一定的影响。
常见的工具:Git、 Mercurial、Monotone、Bitkeeper、...
常见工具使用情况