Control Your Source Code
You usually save your code on your development machine. When you need to share your code with your friend, or perhaps when you use multiple development machine such as desktop and laptop simultaneously, you share your code by copying the entire folder and share it to your liking. This is a very bad practice, especially when sharing involves changes and development from other party. Because of that we need a Source Control system.
So my friends, what is source control? Basically it is a software that controls the changes and revisions on each line of your source code. So every changes are tracked, every files in your software project are monitored, and it has revision history so you will never lose track with any changes happen on your source code. They say that source control only useful for large projects, I say NO! Source control is very useful for any collaboration between two people. Even I, the lonesome programmer, can really make use the benefit of source control system so that I can keep my development workstations, my desktop and my laptop, in sync.
Okay, so I need to find a source control system that is suitable for me. The main requirement for my source control system is: CHEAP, preferably FREE. I was searching for the best solution for me. So I travelled the journey to look for the best. Here’s the story of my journey.
Dropbox, Google Drive, OneDrive a.k.a. File Sharing Services
These services are basically not a source control system. It is a file sharing services that stores your file on the cloud. They have integration with desktop shell (a.k.a. Windows Explorer) so that you can store your files seamlessly from your Windows Explorer just like any local folder. And those managed folders will be automatically synchronized to the cloud. They also have a revision control system, and changes history for every files managed with the service. Basically for a simple collaboration, sharing, and changes tracking, cloud file sharing services provide the necessary features. But the biggest downfall is that this is not a source control system.
In source control system, every changes to source code is tracked line by line, character by character (unless you store a binary file). From my knowledge of notable file sharing services, they track the changes per document basis. Because of this setback, they will unable to provide sophisticated conflict resolution in case file saving conflict happens. File saving conflict may happen if multiple user make changes simultaneously to a file. If you dare yourself with this burden, you can use file sharing services as your source control system. But this is very not recommended.
GitHub, CodePlex, Google Codes
These services are the real source control system. They provide all the basic features for managing your source codes using the well-known source control system software such as Git, Mercurial, Subversion (SVN), or Team Foundation Server (TFS). They also provide a collaboration portal to increase your collaboration experience if you use it for the team. But the major setback for these services are that it is only available for open source project. You may not use it for your personal or commercial project. For me, this is not an option as I don’t plan my personal project to be open source project (for now). GitHub actually provides for private projects, for some cash.
Installing Source Control System Software on Local Machine
This is a plausible idea, and definitely it will not incur you any hosting cost. You can host your projects as many as you like. But with this, you cannot access your source control anywhere you like unless your PC which act as the server is always turned on, and available from the internet. You can use your internet line that provides public IP, incorporated with dynamic DNS service so that you can access your source control server from the internet, but it will incur you electricity and internet cost. Otherwise, you can use it only when you are directly connected to your source control server. For me, this is not a good option as this is not flexible. And for small project that incorporates more than one coder, this is not flexible at all.
Free Source Control Services: Visual Studio Online, BitBucket
At first I thought there were no free source control services available online, especially because I prefer to use Microsoft’s TFS as my source control system. That was until I found out about Visual Studio Online, a cloud service launched in 2012 which provides TFS for private projects for FREE*! This is what I’m definitely looking for. Visual Studio Online provides all the necessary tools for your projects, from source control, collaboration portal, and work item tracking based on Scrum or Agile methodology. They also provides a load testing and automatic build.
I also found out that BitBucket also provide free source control services online for FREE* too. But they are using Git as their source control system software, which I am not really keen of compared to TFS. So, which is why I chose Visual Studio Online to store every line of codes I write.
Final Thoughts
I chose Visual Studio Online for my code hosting. But it’s all depends on your liking. If you prefer Git more than TFS, go for BitBucket. If you prefer Dropbox instead, go for it even though it is highly not recommended. I have been using Visual Studio Online since its beta at late 2012, and I haven’t fully utilized all of its features. And their early adopter account is going to expire soon. But for now I don’t really need the Build and Load Testing features. Perhaps later when my project is growing more.
*free for 5 user per team projects