Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a fundamental difference between backups and version control?

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.

like image 754
user64075 Avatar asked Feb 14 '09 19:02

user64075


People also ask

Is version control a backup?

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.

Is it good practice to use a version control system as a backup solution?

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.

Is version control necessary?

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.

What is the difference between back up and copy?

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.


3 Answers

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.

like image 57
Joonas Pulakka Avatar answered Oct 08 '22 09:10

Joonas Pulakka


I see several fundamental differences between backups and version control:

  1. Backups only store the latest version, or, even if they store multiple versions, they don't store every version. A VCS does store every version,
  2. That backup version is often out of date, because backups don't record every change, while VCSs do,
  3. VCSs allow to pursue multiple alternative versions of the same change at the same time (i.e. branching).

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.

like image 31
Jörg W Mittag Avatar answered Oct 08 '22 09:10

Jörg W Mittag


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.

like image 20
Ash Avatar answered Oct 08 '22 10:10

Ash