Я вижу несколько принципиальных отличий между резервными копиями и контролем версий:
- Резервные копии хранят только последнюю версию, или, даже если они хранят несколько версий, они не сохраняют каждую версию. VCS сохраняет каждую версию,
- Эта версия резервной копии часто устарела, потому что резервные копии не записывают каждое изменение, в то время как VCS делают,
- VCS позволяют одновременно использовать несколько альтернативных версий одного и того же изменения (т. Е. Ветвление).
Однако самое важное различие между резервными копиями и VCS заключается в том, что в VCS изменения имеют значение , означающее . В резервной копии создается новая версия, потому что какой-то компьютер где-то решил, что с момента последнего резервного копирования прошло x
часов; само изменение совершенно бессмысленно . В VCS создается новая версия, потому что некоторые человек решили, что эта версия имеет свой собственный , означающий , свою собственную идентичность, отличную от всех других версий. Таким образом, в резервном копировании все версии равны (точнее: они одинаково бессмысленны), тогда как в VCS все версии являются особыми (они имеют свои уникальные значения). В VCS изменения имеют фактическую историю , где одно событие привело к другому, в резервной копии есть только строка несвязанных событий.
С этим тесно связано понятие изменение метаданных . В VCS каждое изменение имеет автора , отметку времени и, что наиболее важно, сообщение о фиксации . В этом сообщении фиксации записывается , почему было сделано изменение, другими словами, записывается "значение", о котором я писал в предыдущем абзаце.
история фиксации и особенно сообщения фиксации являются наиболее важными данными в хранилище VCS, а не самим кодом! Эти метаданные полностью отсутствуют в резервной копии.