1、版本控制
什么是“版本控制”? 版本控制是一种记录一个或若干文件内容变化,以便未来查阅特定版本修订状况的系统。若是你是位图形或网页设计师,可能会须要保存某一幅图片或页面布局文件的全部修订版本(这或许是你很是渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就能够将某个文件回溯到以前的状态,甚至将整个项目都回退到过去某个时间点的状态,你能够比较文件的变化细节,查出最后是谁修改了哪一个地方,从而找出致使怪异问题出现的缘由,又是谁在什么时候报告了某个功能缺陷等等。 使用版本控制系统一般还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样能够轻松恢复到原先的样子。 但额外增长的工做量却微乎其微。还记得当年修改毕业论文时的保存方法吗?有了版本控制,不再须要那么麻烦了。
2、本地版本控制系统
本地版本控制系统采用某种简单的数据库来记录文件的历次更新差别。此类系统就是复制整个项目目录来保存不一样的版本,并记录每次更新的差别。
其中最流行的一种叫作RCS,现今许多计算机系统上还可看到它的踪迹。
3、集中化的版本控制系统
如何让不一样系统上的开发者协同工做呢?集中化的版本控制系统(
Centralized Version Control Systems,简称CVCS)便应运而生,诸如CVS、Subversion及Perforce等。这类系统都有一个单一的集中管理的服务器,保存全部文件的修订版本,而协同工做的人们都经过客户端连到这台服务器,取出最新的文件或者提交更新。
相比于老式的本地VCS来讲,这种作法使得每一个人均可以必定程度上看到项目中其余人在作什么,而管理员也可以轻松掌控每一个开发者的权限。但这么作的缺点是中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都没法提交更新,也就没法协同工做。 若是中心数据库所在的磁盘发生损坏,又没有作恰当备份,毫无疑问你将丢失全部数据——包括项目的整个变动历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在相似问题,只要整个项目的历史记录被保存在单一位置,就有丢失全部历史更新记录的风险。
4、分布式版本控制系统
分布式版本控制系统(Distributed Version Control System,简称 DVCS)极好地解决了上述问题。 在这类系统中,像Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不仅提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 如此,任何一处协同工做用的服务器发生故障,过后均可以用任何一个镜像出来的本地仓库恢复。由于每一次的克隆操做,实际上都是一次对代码仓库的完整备份。
此外,许多这类系统均可以指定和若干不一样的远端代码仓库进行交互。籍此,你就能够在同一个项目中,分别和不一样工做小组的人相互协做。 你能够根据须要设定不一样的协做流程,好比层次模型式的工做流,而这在之前的集中式系统中是没法实现的。