版本控制系统
用于记录文件修订情况的系统。可以用于版本备份、文件回溯、协同开发。
版本控制系统分类
集中式版本控制系统
比如: CVS、SVN、Perforce,都有一个单一的集中管理的中央服务器,用于保存所有文件得修订版本,所有协同工作人员通过客户端对文件进行取出、提交等操作。
优点:
- 每个协同工作者做出修改,其他人员都可以及时看到
- 管理员可以通过管理中心仓库,控制开发人员的权限
缺点:
- 中央服务器单点故障,会造成所有开发人员无法进行任何操作:版本回退、比较、提交
分布时版本控制系统
比如: Git、BitKeeper。每个客户端不只提取最新版本的文件快照,将会把代码仓库完整的镜像下来,所以每个客户都端都是一个服务器。如果有一个客户端宕机后,其他客户端不受影像,可以继续进行相关操作。
去中心化思想
并且,这类系统都可以和若干不同的远端代码仓库进行交互。这样,就可以和同一项目中分别和不同小组的人相护协作。比如Github。
分布式版本控制系统在管理项目时存放的不是项目版本与版本之间的差异,它存放的是索引,所以每个客户端可以放下整个项目的历史记录。
![file](https://i-blog.csdnimg.cn/blog_migrate/a32c8678e987b57192f666e640490ba6.png)
- SVN对每个版本进行增量备份,存储空间占用较小
- Git对每个版本进行全量备份,存储空间占用较大,所以内部进行了极致的压缩算法
- SVN进行回退时,需要从后往前依次比较差异进行一一回退
- Git进行回退时,需要从后往前一次找到版本索引,相对较快