In the early days of computing, source code was stored on removable disks. If you wanted to make a backup, you simply copied your source files onto a second disk. As software development matured, a few key issues became apparent with this approach:
1. A file could only be edited by a single person at a time. Even in an environment where computers are networked together, in general file editor applications expect that they are the only ones making changes to a file at the time they have it open. In fact, most file systems will block applications from writing to a file if another application has the file open already. This created a bottleneck for development because in some cases a file can be large, and two people or more can feasibly be editing it at the same time. See Google Docs as a modern day example of this that works well.
2. Files were only backed up as often as the developer took time out of their day to make a backup. Backblaze, a backup software company, has done studies on how often people backup, and they found that most people just don’t do it very often, if at all.
3. Even when developers did backup, backups can fail.
4. File backups generally don’t include good information about what changed when and why. A crucial piece of understanding some else’s source code is the ability to retrace their steps and understand why they made the changes they did. Without a clear timeline of when things changed, the work of retracing their steps becomes much harder.
Source control has become more and more popular over the last 20 years as we’ve become increasingly connected on the web, and source control systems have become more and more reliable and efficient. Today most software professionals have landed on one source control system that makes sense for the majority of projects. That system is Git. Green Mango uses Git. Git is an open source development tool designed to help you version control and backup your source files and other ip.
Git provides a few key benefits that should be understood because they can provide great peace-of-mind.
Each time a file is changed a log is created including the date, time, and a statement from the developer about what the change is. This is important because when looking back at history, this provides a clear basis for understanding the mind-frame of the person who made the changes.
Even if you delete the project from your local machine, the files will not be lost.
This is superior to a standard backup because it means data will only be lost if all parties lose their copy of the source.
It also has a process for ensuring that one person will not overwrite changes another made without knowing it. This is important on larger projects where more than one person is making edits to the same files.
This is more important than you may realize. Imagine you’re writing a book and one morning you want to try to rewrite one of the chapters pretty substantially. At the same time, you want to preserve the current version of the chapter. This is in case the new one does not turn out to be as good as the old one. The problem is that if you stop to create a backup, you may lose your train of thought. You carry the stress and decide to make the changes without a backup of the older version. Now imagine if that book was under source control and you knew the old version was always there if you wanted to roll back. You’re able to move forward stress free and without distraction. This is the type of environment that will help a developer write the best code: Lower stress and without distractions.
To re-iterate our goal at Green Mango, we don’t want to provide you with a zip file of source code. That would be missing the important revision history. This also means if your existing development team has given you your source without revision tracking, you’ve lost significant information that could have benefitted your project later.
The way we’d like to provide you with source code is to simply give you access to the Git repository. This allows you to view the changes log and download the latest version of the code at any time.