# Version Control System (VCS)
A Version Control System (VCS) is software that implements [[Version Control]]; tracking and managing changes to files over time. VCS tools maintain a database of every modification, enabling collaboration, history browsing, branching, and recovery of previous states.
VCS can be categorized by architecture: local (single machine), centralized (single server), or distributed (every user has full history).
## Types of VCS
### Local VCS
- History stored only on local machine
- No collaboration support
- Example: RCS (Revision Control System)
### Centralized VCS (CVCS)
- Single central server holds all history
- Clients checkout working copies
- Single point of failure
- Examples: **SVN** (Subversion), **CVS**, **Perforce**
### Distributed VCS (DVCS)
- Every user has complete repository history
- No single point of failure
- Enables offline work and flexible workflows
- Examples: **[[Git]]**, **Mercurial**, **Bazaar**
See [[Distributed Version Control System (DVCS)]] for more details.
## VCS Comparison
| System | Type | Created | Status |
|--------|------|---------|--------|
| CVS | Centralized | 1990 | Legacy |
| SVN | Centralized | 2000 | Declining |
| [[Git]] | Distributed | 2005 | Dominant |
| Mercurial | Distributed | 2005 | Niche |
## References
- https://en.wikipedia.org/wiki/Version_control
## Related
- [[Version Control]]
- [[Source Control Management (SCM)]]
- [[Distributed Version Control System (DVCS)]]
- [[Git]]
- [[Linus Torvalds]]