Why Version Control Exists: The Pendrive Problem
Today I am going to write down about Version Control System. Why it exists, what is its importance and what problem it does solve.
Tracking Changes
We are going to discuss in term of software developement. Let’s say, we are writing a software of any kind. Typical folder with bunch of subfolders and files structured according to the project.
Any software is not build in one go. It is developed over many iterations over time. And there may be many contributors in the development of software.
Initially when the software is of not that big scale, it is ok (and easier) to remember changes made into code (or any format/file), and it is not even important to track changes (when it is not of big scale). But as and when complexities arise when project scales, it is really important to track changes.
Tracking Who Contributed
If there is no version control / collaborator System, when one (Let's say Person A) had to share project with colleage or friend (Let's say person B), he/she would have to copy entire project folder and send it over some media sharing device such as pendrive (or zip folder and send it over internet).
Then his/her friend/colleague would make changes in the project and send the entire project back over by any means (same pendrive). But now person A does not know what person B changed in the project, unless told personally/telephonically/emailly, but it is cumbersome everytime.
Moreover, untill project is got back from person B to person A, person A would not be able to do any changes in his copy of project because he will be out of sync.
Versioning before GIT
Imagine our scenario, after so many back and fourth, what would be space look like where project folder is saved. It would have proct folder name like project, project_version_1, project_version_2, project_final, project_final_version_2, etc.
This is unreadable, clumsy and hard to remember. And most important, it is not scalable.
This scenario we discussed only involved two persons. Image more people are in the development. What will be the problems.
Same code (or anything) edited by more than one persons would be hard to hande. There is no collaborative history is maintained. Losing code would be common problem.
Solution
In order to overcome all the problems and challenges, GIT was invented by legendary Linus Torvalds, the creator of Linux. This made software development more scalable, collaborative and tracking changes / contribution easier.
Plus, we have not discussed but branching of software development journey is also well handled by GIT. And merging also.
Future Article
We shall look into how internally GIT works and some basic commands and workflows of GIT.