About
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.
Software
Version Control System (VCS)
Implementation
Copy in another directory
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.
VCS
Local Computer
VCSs a simple database that kept all the changes to files under revision control.
Example:
- rcs
Centralized
Centralized Version Control Systems (CVCSs)
Example:
- CVS
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
Distributed Version Control Systems (DVCSs) such as:
- Git,
- Mercurial,
- Bazaar
- or Darcs
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.