Skip to main content

Version Control System


Table of contents


  1. Life Without Version Control
  2. The Types of Systems
  3. Git
  4. GitHub
  5. Conclusion


1 - Life Without Version Control



1.1 The Daily Disaster Scenario

Imagine this familiar situation:

  • You are working on a software development project
  • You have a brilliant idea for a new feature
  • You spend hours developing it
  • You run thorough tests
  • You deploy it successfully
  • A few weeks go by...
  • You develop new features
  • Suddenly, a critical bug appears
  • You want to go back to the previous version
  • But you can't find the old working version
  • Result: Wasted time, stress and frustration

1.2 Why Use Version Control

The disaster scenario described above perfectly illustrates why we need a version control system. Here are the main benefits:

1.2.1 Complete Traceability
  • Detailed history: Every change is recorded with metadata (author, date, description)
  • Rollback possible: The ability to return to any earlier version
  • Understanding the evolution: A clear view of the project's evolution
1.2.2 Efficient Collaboration
  • Parallel work: Several developers can work simultaneously
  • Smart merging: Changes can be merged automatically
  • Conflict resolution: Tools to handle conflicting changes
1.2.3 Security and Backup
  • Automatic backup: Every version is saved
  • No data loss: Old versions are always accessible
  • Easy restore: Quick return to a stable version if a problem occurs
1.2.4 Improved Productivity
  • Risk-free testing: The ability to experiment without fear
  • Controlled deployment: Management of production versions
  • Built-in documentation: The history serves as documentation

🔝 Back to table of contents


2 - The Types of Systems



There are three main types of version control systems, each with its advantages and disadvantages:

2.1 Local System (LVCS)

  • Simple database on your local machine
  • Change history stored locally
  • No collaboration possible
  • Risk of data loss

2.2 Centralized System (CVCS)

  • Central server that stores the history
  • Developers only retrieve the latest version
  • Collaboration possible but limited
  • Single point of failure

2.3 Distributed System (DVCS)

  • Each developer has a complete copy
  • Work possible offline
  • Advanced collaboration
  • High availability and security

2.4 Comparison of the Systems

Here is a comparison table of the different systems:

CharacteristicLVCSCVCSDVCS
Collaboration✅✅
Offline Work
Security⚠️
ComplexitySimpleMediumHigh
ExampleRCSSVNGit

2.5 Tools and Examples by System Type

TypeToolsCharacteristicsUsed by
LVCS• RCS
• SCCS
• Source Integrity
• Local storage only
• Simple database
• No network required
• Solo developers
• Small projects
• Embedded systems
CVCS• SVN (Subversion)
• CVS
• Perforce
• ClearCase
• Central server
• Sequential version numbers
• Requires a connection
• Traditional companies
• Legacy projects
• Co-located teams
DVCS• Git
• Mercurial
• Bazaar
• Fossil
• Complete copies
• Lightweight branches
• Advanced merging
• Startups
• Open Source
• Distributed teams

💡 Historical note: The evolution of VCS mirrors that of development practices, moving from simple, local systems to distributed solutions suited to modern collaborative work.

Important note: Today, Git has become the essential standard in the software development industry. Whether for personal projects, startups or large companies, Git is used by more than 90% of developers worldwide. Its dominance is such that mastering Git is now considered a fundamental skill for any development professional.

🔝 Back to table of contents


3 - git



3.1 Git: The New Industry Standard

Git has established itself as the dominant version control system, gradually supplanting SVN (Subversion) in most organizations:

3.1.1 Massive Adoption

  • Tech Companies: More than 90% of giants like Google, Microsoft and Amazon use Git
  • Open Source: GitHub hosts more than 200 million Git repositories
  • Gradual Migration: Many companies are abandoning SVN for Git

3.1.2 Why Is Git Replacing SVN?

AspectGitSVN
PerformanceUltra fast (local operations)Slower (depends on the server)
CollaborationLightweight branches and smart mergesComplex branches and frequent conflicts
AvailabilityOffline work possibleRequires a server connection
SecurityDistributed and secure historySingle point of failure

3.1.3 Impact on the Industry

  • De Facto Standard: Git has become an essential skill for developers
  • Rich Ecosystem: GitLab, GitHub, Bitbucket offer complete solutions
  • DevOps & CI/CD: Git integrates perfectly into modern pipelines

🔝 Back to table of contents


4 - Github



4.1 GitHub: The Collaboration Platform Par Excellence

GitHub is like a social network for code! Imagine that Julien and Marc work together on a project:

4.1.1 A Concrete Example

Julien and Marc are developing a mobile application:

  • Julien works on the login screen
  • Marc handles the main menu
  • Each can see the other's work
  • They can comment and suggest improvements

4.1.2 The Benefits for Teams

  • Visibility: Everyone sees who is doing what
  • Collaboration: Easy to share and discuss code
  • Organization: Projects are well organized and documented
  • Security: Changes are tracked

More Than Just a Host

GitHub also offers:

  • A space for documentation
  • Project management tools
  • An issue tracking system
  • Code review features

💡 In summary: GitHub is like a virtual workspace where developers can collaborate easily, share their code and track the progress of their projects.

🔝 Back to table of contents


5 - Conclusion



Git and GitHub - An Important Distinction

To conclude this chapter on version control systems, it is crucial to clear up a common confusion:

Git ≠ GitHub

Git is:

  • A distributed version control system
  • A command-line tool
  • Free software created by Linus Torvalds
  • Independent of any hosting service

GitHub is:

  • A code hosting platform
  • A proprietary web service (owned by Microsoft)
  • A web interface to manage Git repositories
  • One of the many Git-based services (like GitLab, Bitbucket)

💡 Analogy: Git is like email technology (SMTP), while GitHub is like Gmail - one service among others using that technology.

This distinction is fundamental because:

  • You can use Git without GitHub
  • Other platforms offer similar services
  • Git skills are transferable to any platform

Mastering Git, regardless of the chosen platform, remains an essential skill for any modern developer.

🔝 Back to table of contents