If your business is working with code for software of any kind, your remote team simply needs a version control system. This one of the most important technical that any software development team needs to do and get right. Version control just makes everything work so much better, faster, and safer.
There are still some who argue that this is not true, but a version control system simply saves time for teams of all sizes, from just a contractor to tens of people. The time it takes to learn to use one will be paid back in improved quality of work and safety.
As of this writing, in almost every corner of the world and every software development service, everyone is leaning towards Git, a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. There are still professionals out there who are not using any kind of a version control system. This causes constant issues with version updates, when you’ve no real control over the code. When you’re working alone, a version control system is a big benefit, but in a large team it’s a necessity. Try managing a single codebase without any version control and you’ll quickly find out.
Git allows you to control your code and your software file structure in a way that is both lean and complex at the same time. If you just take the basics of Git, it allows you to see every step of code that anyone has put to a repo from the entire time of the project. So if someone does something bad, you can just track back to where the mistake was made. Remember not to blame people for the mistakes, but control why the mistake was made. Git is nowadays arguably the most popular solution. It’s gaining popularity because its simple, fast and has many good GUI solutions.
“Global information tracker”: you’re in a good mood, and it actually works for you. Angels sing and light suddenly fills the room.
- Linus Torvalds on Git
There are other good alternatives out there. Some older companies and experienced developers still use CVS, which has been in use for over three decades. For taking up CVS nowadays, you would have to have a really specific reason for doing so.
SVN, which is basically CVS with a great number of improvements, is still going strong. SVN might be good for you if you need access restrictions based on path names or have a team that is used to CVS.
If you want simplicity, you might want to try Mercurial, which is in many ways similar to Git, and shares many of its advantages. With Mercurial, however, you’ll find it a bit harder to find people who are experienced using it
Choosing the best GUI for your version control system
If you’re looking for something for a professional use, and you’re a Mac user, I would suggest using Tower. Tower is a very advanced tool with a simple user interface and great documentation. It is, however, a paid program.
There is also a good free tool called SourceTree, which is arguably the most used GUI client for Git at the moment. If you’re also using Mercurial in some projects, SourceTree is a great fit, because it will work with both Git and Mercurial. SourceTree is also available for Windows users.
If you were a Linux user, the best GUI in my experience would be Git-cola, which is totally open-source in a Linux fashion. Git-cola also works on Mac and Windows if you prefer using a totally open-source option.
For SVN the usual recommendation is using SmartSVN, which is the most popular and well-liked client that works on all platforms.
Tower - http://www.git-tower.com/
Mac – GIT
SourceTree - http://www.sourcetreeapp.com/
Mac, Windows – Git, Mercurial
Git-cola - https://git-cola.github.io/
Mac, Windows, Linux – Git
SmartSVN - http://www.smartsvn2.com/
Mac, Windows, Linux - SVN
For extremely minimal needs, and for non-developmental purposes, there are other solutions. Google Docs gives you a possibility to maintain file revisions and see through changes and such if your needs are not for complex systems. There are also various other cloud-based minimal file revisioning solutions like Owncloud and Seafile.
Which ever version control solution you end up using, make sure that you’re using one. Just by using version control, your remote work will be easily trackable, and much more secure. Imagine that after you destroy something, you can just revert back one version, compared to doing all that by hand.