How does version control differ from plain backups?
Let's forget about the feature decoration, and concentrate on the soul of version control. Is there a clear line that backups must cross before they can be called a VCS? Or are they, at heart, the same thing with different target markets?
If there is a fundamental difference, what is the absolute minimum requirement for something to reach the status of version control?
When you answer, please don't just list features (such as delta compression, distributed/central repositories, and concurrent access solutions) that most version control systems have or should have, unless they actually are necessary for a VCS by definition.
Rather than just storing the most recent upload, file versioning lets you keep a list of all the changes made to a file and go back to recover the old data. Is Version Control a Backup? Version control software can act as a backup.
Version control and backups are orthogonal concepts and should be used together, one is not a replacement for another. Yes, version control will persist the change history in the repository, but the repository itself is not protected just as any computer file is not protected.
Version control is important to keep track of changes — and keep every team member working on the right version. You should use version control software for all code, files, and assets that multiple team members will collaborate on. It needs to do more than just manage and track files.
There's a big difference between clone and backup. A backup disk creates an image file. You can use this to recover data if there's an emergency. Cloning copies data from one hard disk to another, if you want to change the drive.
The fundamental idea of version control is to manage multiple revisions of the same unit of information. The idea of backup is to copy the latest version of information to safe place - older versions can be overwritten.
I see several fundamental differences between backups and version control:
However, the single most important difference between backups and VCS is that, in a VCS, changes have meaning. In a backup, a new version is made, because some computer somewhere decided that it was x
hours since the last backup; the change itself is completely meaningless. In a VCS, a new version is made, because some human decided that this version has its own meaning, its own identity, different from all the other versions. So, in a backup, all versions are equal (more precisely: they are equally meaningless), whereas in a VCS all versions are special (they have their own unique meanings). In a VCS, changes have an actual history, where one event led to another, in a backup there's just a string of unrelated events.
Closely related to this, is the notion of change metadata. In a VCS, every change has an author, a timestamp and, most importantly, a commit message. This commit message records why the change was made, in other words, it records the "meaning" I wrote about in the previous paragraph.
The commit history and especially the commit messages are the most important data in a VCS repository, not the actual code itself! This metadata is completely absent in a backup.
The capability to perform branching and merging separates version control systems from plain backups. "Multiple concurrent universes".
See also Eric Sink's excellent version/source control guide.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With