What is Version Control System?
Version Control Systems are meant for tracking and keeping a history of changes you are making in your project files over time. It ensures that all changes are being saved in a location but each such change is tied up with some sort of versioning. The magic of versioning is that you can easily recall a specific version at any point of time without affecting any other changes that are saved in other versions. The concept of versioning is not only limited to development, but you can use it for other purposes as well. For example, you are writing a long and critical research report which can take long time to finish. If you save your everyday’s work with a specific version or under some system which creates versions for you, it would be very helpful for you to refer or even switch back to a particular version number easily whenever you want.
How Version Control systems makes developers’ lives easier
Not all the time you are working on something or in a project where you are the only one dealing with it. Rather when you are a developer in a development team, you may be accessing some parts of the code in a project which other developers in your team too can access. Thus changes made in one part of the source by one developer can be incompatible with those made by another developer working at the same time. Situation like this can easily be solved by implementing a Version Control system, bring the project and all developers working in that project under it all changes and activities can be tracked and logged in such a way that a developer can have the ability to go back forth between versions during development process. How?
- A complete history of every file, which enables you to go back to previous versions.
- The ability to work on independent streams of changes, which allows you to merge that work back together.
- The ability to trace each change with a message describing the purpose and intent of the change.
Centralized Version Control System (CVCS)
In Centralized Version Control Systems, you have a single “central” copy of your project located on a server remotely and commit your changes to this central copy. You pull the files that you need from the server, but you don’t have a latest complete copy of the project at your local development environment. Some of the most common version control systems are centralized, including Subversion (SVN) and Perforce. A popular SVN is Tortoise SVN.
Distributed Version Control System (DVCS)
With distributed version control systems (DVCS), you don’t rely on a central server to store all the versions of a project’s files. Instead, you clone a copy of a repository locally so that you have the full history of the project. Two common distributed version control systems are Git and Mercurial.
Know more about CVCS and VDCS: Comparison Between Centralized and Distributed Version Control Systems