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>
 | |
| 
 |