Modern version control systems for Debian packaging
DebConf7, Edinburgh, Scotland
21 Jun 2007
Introduction
- Distributed VCS are hip
- However, reason for being hip is not the "distributed" feature
- Let's clean up the mess:
- snapshot- vs. commit-based
- centralised vs. distributed
Evolution of version control
CVS-like version control systems
- (conceptually) snapshot-based, a revision corresponds to the state of the
tree at a given time
- can be represented changeset-centric (CVS vs. SVN)
- merging consists of computing diffs and applying patches
- a commit (changeset or snapshot) has only a log message as meta information
Modern version control systems
- commit-based, there is no snapshot of a tree at a given time
- a tree is identified by the set of commits it contains
- merging consists of identifying the set difference and applying the commits
in the reduced set
- every commit is identified by a unique hash
Commit-based version control
Centralised version control
Example of commit-based version control
Features of distributed VCS relevant to Debian
- branching and merging are trivial
- can be run centralised on alioth
- everyone can clone the repository and start hacking with real VCS backing
- no need to keep track of what has been merged where
Demonstration
Let's see git in action before Manoj demonstrates his workflow