55 lines
2.5 KiB
Markdown
55 lines
2.5 KiB
Markdown
---
|
|
title: Version Control System
|
|
---
|
|
## Version Control System
|
|
|
|
Version control systems (VCS), also called Source Code Management (SCM), are tools used to track changes on files, manage version and ease collaborative file editing.
|
|
There are mainly 2 types of VCS:
|
|
- Centralized Version Control System
|
|
Where a central repository is authoritative. The associate architecture is client/server.
|
|
The first VCS (CVS, SVN...) were Centralized Version Control System.
|
|
- Distributed Version Control System
|
|
Where multiple repository exchange modification. The associate architecture is mostly peer to peer, but one repo can be declared as authoritative.
|
|
The most used modern VCS (Git, Mercurial...) are Distributed Version Control System.
|
|
|
|
### Why use it?
|
|
- **Changes history** - VCS enable the user to browse and search all the changes which are automatically recorded with useful information (date, author...) and
|
|
- **Versions/tags** - The user can search/retrieve specific state of the files that have been labeled with tags and version names
|
|
- **Branching/Merging** - Distributed Version Control System make it easy to maintain parallel branch of files and to merge them partially or totally when needed.
|
|
- **Atomic operations** - All modern VCS provide atomic operations: All modifications are guaranteed to succeed or fail as whole which ensure that the files are always in a consistent state.
|
|
|
|
### Most popular Version Control System
|
|
|
|
- Git
|
|
|
|
*Git* is a Distributed Version Control System and probably the most used VCS used nowadays with *Mercurial*.
|
|
|
|
- Mercurial
|
|
|
|
*Mercurial* is a Distributed Version Control System and probably the most used VCS used nowadays with *Git*.
|
|
|
|
- CVS
|
|
|
|
*CVS* is an old SCM which was proeminent before *SVN* widespread.
|
|
*CVS* and *SVN* are now deprecated in favor of Distributed Version Control System like *Git* and *Mercurial*.
|
|
|
|
- SVN/Subversion
|
|
|
|
*SVM* is an old SCM that succeeded *CVS*.
|
|
Eventually *SVN* was deprecated by the wide adoption of Distributed Version Control System like *Git* and *Mercurial*
|
|
|
|
### More Information:
|
|
<!-- Please add any articles you think might be helpful to read before writing the article -->
|
|
<a href='http://savannah.nongnu.org/projects/cvs' target='_blank'>CVS</a>
|
|
|
|
<a href='https://git-scm.com/' target='_blank'>Git</a>
|
|
|
|
<a href='https://www.mercurial-scm.org/' target='_blank'>Mercurial</a>
|
|
|
|
|
|
<a href='http://subversion.tigris.org/' target='_blank'>SVN</a>
|
|
|
|
|
|
<a href='https://en.wikipedia.org/wiki/Version_control' target='_blank'>Version Control on Wikipedia</a>
|
|
|