工程设计领域中,使用“版本控制”管理工程蓝图的设计过程。在 IT 开发中也可以使用版本控制思想管理代码的版本迭代。
目的
协同修改:支持在服务器对同一个文件多人协同地修改;
数据备份:同时保存目录及文件的当前状态与每次提交时的历史状态;
版本管理:不保存版本间的重复数据以节约存储空间;
为此,SVN 和 Git 分别采用增量式管理 和文件系统快照 的方式。
权限控制:对团队协作者进行权限控制(SVN 和 Git 共有);审核团队外开发者贡献的代码(Git 独有);
历史记录:查看修改者、修改时间、修改内容、日志信息等项目;将本地文件恢复到某一指定的历史状态;
分支管理:允许开发团队同时优雅地推进多条生产线任务,提高效率。
工具
集中式版本控制工具
如:CVS、SVN、VSS 等。
- 仅云端库有版本历史记录,本地库仅有最新的版本;
- 无法完全避免单点故障的问题。
单点故障:一个主机连接多个处理节点,主节点负责分发任务,而子节点负责处理业务,当主节点发生故障时,会导致整个系统发故障。
分布式版本控制工具
如:Git、Mercurial、Bazaar、Darcs 等。
- 云端库和本地库都会为各个版本历史记录存档;
- 从根本上避免了单点故障。