Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
Version Control System (VCS)
Copy files into another directory (time-stamped directory). Simple but error prone because you can forget which directory you’re in and accidentally write to the wrong file or copy over files you don’t mean to.
VCSs a simple database that kept all the changes to files under revision control.
Example:
Centralized Version Control Systems (CVCSs)
Example:
Downside: The centralized server is a single point of failure. Whenever you have the entire history of the project in a single place, you risk losing everything.
This system keep a set of files and the changes made to each file over time. They store information as a list of file-based changes.
Distributed Version Control Systems (DVCSs) such as:
clients don’t just check out the latest snapshot of the files: they fully mirror the repository. Every clone is really a full backup of all the data. This architecture allows to set up several types of (validation) workflows that aren’t possible in centralized systems, such as hierarchical models.