什么是版本控制以及为什么使用它

版本控制系统允许开发人员或开发团队基本上访问 I 时间机器。如果用于构建程序或系统的源代码,设置等受版本控制,那么开发人员可以回过头来恢复丢失的功能,跟踪错误的引入方式,支持旧版本软件的用户由于某种原因尚未准备好或能够升级到最新版本的人。

最古老的版本控制实例是在特定时间点拍摄源代码的快照,并将它们放在一个带有标签的安全位置,在某些情况下,这些实际上是完整的打卡。

目前有许多版本控制程序可以简化这项任务,这些程序分为许多不同的类别:

  • 简单的备份解决方案不是真正的版本控制,但有时声称这样
  • 在 MS-Word 中的文件内部进行本地更改 **
  • 锁定集中版本控制系统*,如 SCCS,CVS,Perforce 等。*
  • 许可的集中版本控制系统*,如 SVN*
  • 分布式版本控制,例如 git 和 mercurial

所有版本控制系统都应该让你:

  • 将源代码恢复到给定的时间点==无限撤消
  • 跟踪已发布到系统的更改
  • 升级到该工具的更高版本,而不会丢失任何信息

大多数版本控制系统还包括:

  • 比较变化
  • 跟踪谁做出了改变
  • 谁可以进行更改的权限
  • 与错误跟踪集成
  • 所有承诺工作的机外,异地或在线备份*,让你感觉温暖*,对于分布式 VCS 工具,每个开发人员都可以完整备份项目的整个历史记录。

许多版本控制工具包括或提供其他功能的*机制,*例如:

  • 怪谁最后改变了哪一行修改
  • 创建,分发和应用补丁只需发送你的更改即可
  • 通过电子邮件协作
  • 自动检查传入的文件/更改以确保它们符合给定的规则
  • 代码/变更审核和/或批准
  • 自动将版本状态插入到文件中以嵌入程序中
  • 实验,特定功能或客户特定版本的代码通常称为分支
  • 使用持续集成和/或连续测试工具
  • 发布和/或部署机制
  • 发行说明生成
  • 临时存储你在切换到另一个版本/分支以执行其他操作时尚未完成的更改。
  • 二进制搜索允许定位哪个版本引入了特定的 bug

总结一下这一部分大多数专业或严肃的代码开发人员除了最琐碎的代码之外,一旦他们养成了使用它的习惯,就会爱上版本控制。能够说,即使多年以后,版本 1.3.1 和版本 1.3.1.1 之间的确切变化可以是一个很大的帮助。像审计员这样的人喜欢良好的版本控制系统和实践,因为它在与问题跟踪系统集成时提供了跟踪能力 - 能够说“ 这个问题是由这个人产生的这些变化来解决的 ”或“ 这个改变是在这个至今为止为解决 ** **** **** 问题“使他们更快乐。拥有,可能多次,关闭机器和/或非现场备份你的所有工作意味着如果你的机器坏了或你的办公室被摧毁,你可以在短时间内恢复工作。如果你正在努力开源项目 VCS 很可能是你的主要协作审查工具,试图在没有人的情况下工作会让你不被同行认真对待 (github,bitbucket 等是围绕版本控制工具构建的)。你的用户最终程序可能不会注意到你正在使用版本控制工具,但当你能够说“如果升级到你应该看到问题消失的那个问题在 XYZ 版本中得到修复”时他们会喜欢它。