Version control is the ability to manage the change and configuration of an application. Versioning is a priceless process, especially when you have multiple developers working on a single application, because it allows them to easily share files. Without version control, developers will eventually step on each other’s toes and overwrite code changes that someone else may have completed without even realizing it. Using these systems allows you to check files out for modifications, then, during check-in, if the files have been changed by another user, you will be alerted and allowed to merge them.
Version Control Benefits
Version control systems allow you to compare files, identify differences, and merge the changes if needed prior to committing any code. Versioning is also a great way to keep track of application builds by being able to identify which version is currently in development, QA, and production. Also, when new developers join the team, they can easily download the current version of the application to their local environment using the version control system and are able to keep track of the version they’re currently running. During development, you can also have entirely independent code versions if you prefer to keep different development efforts separate. When ready, you can merge the files to create a final working version.
Another great use for versioning is when troubleshooting an issue, you are able to easily compare different versions of files to track differences. You can compare the last working file with the faulty file, decreasing the time spent identifying the cause of an issue. If the user decides to roll back the changes, you can implement the last working file by using the correct version.
Popular Versioning Software
There are various types of versioning software available for both Windows and Macs, such as Subversion SVN, Git, and Surround SCM. Subversion SVN is a free, open-source version control system designed by Apache. It is reliable, easy to use, and can handle small and large scale applications. Git is also a free open-source version control system that is more common for Mac users. Git is especially useful for handling multiple local branches. It allows you to have different code versions simultaneously that you can independently choose to share. This means that developers can work on different requirements separately without having to do a lot of work later to merge the versions. Surround SCM, on the other hand, is a version control system designed by Seapine Software that has a cost and requires licensing. However, one of the pros of Surround SCM is the fact that it provides greater security than some of the other version control systems.
Personally, I have used Subversion and Surround and find both of them to be decent tools. As far as Subversion, one of the small features I like is being able to right-click on a local SVN directory and have the Tortoise options, which is a Subversion client, available right away. I can commit or update the directory or a single file by just right clicking on it. When using Surround SCM, you have to open the software and browse to the desired repository before being able to select any options. Currently, I’m using Surround integrated with TestTrack, which is an issue management system. I find the integration to be great, making it easy to check files in and out and then attach any changed files directly to the TestTrack tickets. This helps keep the ticket and Surround SCM information in sync. It also keeps the source code changes linked to the tickets which allows any member of a team to review the changes pertaining to the specific ticket or requirement.
In the past, I have worked with multiple developers without having a version control system and it was costly to keep track of the files we changed while attempting to make sure we didn’t break each other’s code. In comparison, Segue’s development environment has all of this tracked for us, making the whole process more efficient, and at the same time keeping a historical record of all changes made to all our applications.
With all the free version control systems available, there is no reason to do without. Professional developers and firms should invest in these kinds of tools to provide their clients with consistently higher quality products and services.