A system that records changes to code

A DVCS (Distributed Version Control System) that allow for different people to make changes to files and for the changes by one person to be bundled together in 'commits' that can then be applied or undone at will. It allows for separate copies of the code in 'branches' that can then be merged back into the main code (itself a branch, usually called master) as needed. It allows for offline work and it is amazing space efficent due to compression and only storing delta changes for branches.