版本控制与普通备份有何不同?
让我们忘记功能装饰,专注于版本控制的灵魂.在将备份称为VCS之前,备份是否必须交叉?或者,它们对于不同的目标市场而言,同样重要吗?
如果存在根本区别,那么达到版本控制状态的绝对最低要求是什么?
当您回答时,请不要只列出大多数版本控制系统已经或应该具有的功能(例如增量压缩,分布式/中央存储库和并发访问解决方案),除非它们根据定义实际上是VCS所必需的.
版本控制的基本思想是管理同一信息单元的多个修订.备份的想法是将最新版本的信息复制到安全位置 - 旧版本可以被覆盖.
执行分支和合并的功能将版本控制系统与普通备份分开."多个并发宇宙".
另请参阅Eric Sink的优秀版本/源代码控制指南.
我看到备份和版本控制之间存在几个根本区别:
备份仅存储最新版本,或者即使它们存储多个版本,它们也不会存储每个版本.VCS 确实存储了每个版本,
该备份版本通常是过时的,因为备份不会记录每个更改,而VCS会记录,
VCS允许同时追求同一变更的多个替代版本(即分支).
但是,备份和VCS之间最重要的区别在于,在VCS中,更改具有意义.在备份中,制作了一个新版本,因为某个计算机某处决定x
自上次备份以来已经过了几个小时; 变化本身完全没有意义.在VCS中,制作了一个新版本,因为有些人认为这个版本有其自己的含义,它自己的身份,与所有其他版本不同.因此,在备份中,所有版本都是相同的(更确切地说:它们同样毫无意义),而在VCS中,所有版本都是特殊的(它们具有自己独特的含义).在VCS中,更改具有实际历史记录,一个事件导致另一个事件,在备份中只有一系列不相关的事件.
与此密切相关的是变更元数据的概念.在VCS中,每个更改都有作者,时间戳,最重要的是提交消息.此提交消息记录了更改的原因,换句话说,它记录了我在上一段中所写的"含义".
在提交历史,特别是提交信息是在VCS库中最重要的数据,而不是实际的代码本身!备份中完全没有此元数据.