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:

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.

Structure

  • Trunk: Main development map
  • Branches : branches off of the trunk or of other branches
  • Tags : named/numbered releases

Documentation/Reference