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