Version Control Systems
To understand Git, you need to understand what a Version Control System is. In this chapter, we will cover how things used to work before Version Control Systems, then we will learn what Version Control Systems are, why they are useful to us and get exposed to the different types of popular options that we can use.
Software Engineering Team Lead and Director of Cloudsure
How things used to work
Here's a little blast to the past: Once upon a time we used to make backups of our code. Then we made backups of those backups. And then those backups had backups. It got hairy!
Deployments and website publishing was even more of a nightmare. We would do an old-school FTP of our files to a server somewhere and hope nothing went wrong.
Challenges
- We didn't know what the most recent working version of files were in the sea of backups.
- We didn't know what changed in files before it stopped working.
- We didn't know which file to target to fix when a breaking change was introduced.
- We didn't know what version of the website was live.
- We couldn't easily recover from lost or damaged files.
- Teams couldn't effectively and safely collaborate especially on the same files.
Solution
Version Control Systems
Enter the Version Control System - or VCS. It is a system - in the form of software - that will track and manage files in your file system over time. You can see how tracked files evolve as you gain access to different versions of it. This empowers you as an individual and teams to collaborate effectively and safely together. You can develop and release work in an automated and efficient way.
This video offers an introduction to Version Control Systems and why they are useful.
This video offers a basic understanding of Version Control including the main types of Version Control and a quick introduction to Git.
Version control software keeps track of changes to your code in a simple and structured way. If a mistake is made, developers can turn back the clock and compare earlier versions of their code to help fix mistakes while minimizing disruption to all team members.
— Git Guides YouTube video below
This video also covers the basics of Version Control Systems, explores the benefits and takes a look at the best systems in the market (at the time of the video).
Benefits
- Accessibility
Different versions of the same files can be accessed via its historical information that is maintained. - Collaboration
Files can be accessed remotely and developers can see who changed what, when and why (if the author specified). - Traceability
It is easier and faster to trace back to where errors and bugs could potentially be introduced. There are tools available to assist you with testing code at certain points in time. - Recoverability
Version controlled files can be restored if your data is lost or if something goes wrong with your computer. - Economical
There aren't actually copies and backups made of your files for every version, so disk space is conserved. - Work remotely
Teams are not constrained to geographical locations so they can work remotely. - Enforce discipline
Teams can collaborate with written communication and be deliberate about the change that is introduced into the codebase. You can put agreed-upon workflows in place to fix bugs, create new features, maintain existing code and experiment with new concepts. - Change context
You can quickly get up to speed with the context of a particular change by seeing what changed in that iteration (what files were affected).
Different systems
These are only a few. Be curious. Feel free to explore different software and find out what pros on cons each one has. You can also look for comparison information between well known options to see how they match up to one another.
This video offers a quick introduction to Git, why it should be learned and where to begin.
Chapter objectives
✅ You should now be able to explain what a Version Control System is.
✅ You should have a better idea of why we need Version Control Systems.
✅ You should be able to differentiate between different options available on the market.
References
- What is Version Control - Atlassian
- What is Version Control - GitLab
- What is Version Control and What Are Its Benefits? - Simplilearn
- 6 Version Control Systems Reviewed - Smashing Magazine - Glen Stansberry
- Version Control Systems - Geeks for Geeks