Types of Version Control Systems
- Centralized Version Control System
- Overview:

- The Centralized Version Control system has single point of failure i.e centralized repository. During maintenance there will be downtimes. If there is no proper backup/replication mechanism for this centralized you might loose everything.

- Examples:
- Subversion
- IBM Clear Case
- Overview:
- Distributed Version Control System:
- Overview

- Every Workstation has a working copy and repository and to sychronize work done by multiple developers we would have a server with central repository.
- In Distributed Version control systems a copy of repository is present on every machine using version control system, so there is no single point of failure

- Examples:
- mercurial
- git
- Overview
Distributed Version Control System (DVCS) => Git
- To synchronize the repositories across multiple systems we still maintain a central location i.e. the server in the below image

- Server in DVCS has the same software installed as all the nodes.
- The Centralized Server will have extra functionality
- It needs to accept the requests from other workstation repositories, so these server have a service or a daemon where the expose the connectivity using protocols such as http, ssh
- The server would have user management

- The Centralization part in the case of Git can be done in two ways
- Hosting your own Git Servers in your Organization (Self-Hosting)
- GitLab
- Gitolite
- BitBucket
- Hosted Git Servers
- GitHub
- BitBucket
- Code Commit
- Azure Source Repos
- GitLab
- Hosting your own Git Servers in your Organization (Self-Hosting)
