Types of Version Control System.
#Centralised Version Control System.
Introduction:-
It is very easy to set up and easy to use.it is good for a small number of files and small projects. The total project code is being stored at the Central depository server. version control is happening at only one place that is the central repository server. Every developer is required to connect to this Central repository server to continue their work. All Commit and checkout operations will be remote, on the Centralised Repository Server and not locally(In the working directory). Examples of centralized version control systems are the CVS, Perforce, SVN, and TFS.
Limitations of centralised version control system.
Single point of failure: The total code is stored in a single place which is the central repository server if something goes wrong with this Central depository server recovering it is very difficult.
All checkout and commit operations will be performed by connecting with the remote Central depository server which means all developers should be connected with the Central repository if network outrages, version control will not be available for the developers.
Low performance: All checkout and commit operations will be performed by connecting with the remote Central repository server and the operation will be performed over the internet, these are not local operations so performance would be low.
To overcome this limitation we have to go for a distributed version control system.
#Distributed Version Control System.
Introduction:-
Its repository is distributed; each developer has their repository means every working directory has its local repository. All commit and checkout operations will be performed locally and hence performance is more because no network is required between the working directory and repository, all-time version control is available, and there is no question of a single point of failure.
From the above Drawing:-
I have taken only one developer's working directory but in actuality, multiple developers are working in an organisation. Commit and checkout are performed locally and there is no need for a network. Examples of distributed version control systems are Git, Mercurial, fossil etc.
Now as I have said there will be many developers then how do they merge all their code? The answer is using a Remote Repository. and this remote repository is known as GitHub, GitLab, bitbucket, etc. It should also noted that this remote repository is being used to share code with peer developers and the final delivery of project code will be done from this remote repository only. See the below image to get an idea.
#The general meaning of Push-Push is an operation by which one developer sends changes of his repository to another repository.
#The general meaning of Pull-The process of getting files from another's repository to our local repository.