Version control system is something that needs to be considered more and more for different business applications, not just software development. It’s amazing how many people think that version control is not worth doing because it’s a waste of time and money. Too often, implementing a version control process within a business is considered as adding redundant business process. In some aspects agree that we do not want to get stuck on process and ended up not getting anything done, however having version control system will no cause this issue; providing that the right system has been implemented.
So today we are going to talk about version control for both business documents and software development codes. We’ll explore why we should be using them and what happen if we do not use them.
Code Version Control System
Version control system for software development is of course very common these days. However I will talk about it briefly today, because there are still solo developers or designer/developers that are not exposed to version control. Here are a few reasons why you should use version control system even if you are a solo developer.
You want to remember good things. Software development is an iterative process, which means you come up with ideas, rough design and then implement it. More often though there will be bugs and defects that would need to be fixed and in the process of fixing them we would make changes to the code base. Unfortunately, the problem with making changes is that sometimes things can get lost. If you do not have version control system, there will be no way to recover them unless you have a really good memory. This becomes an ever larger problem if you lose any of your team members from the project, the lost knowledge will not be recoverable. So this is why we need a code version control to return back to the history and retrieve lost good codes.
Prevent multiple copies of files. Some may wonder, what happen if a developer doesn’t use version control system? Why the answer is creating multiple copies of one file. You’ll have something like login.php. login.php.bak, login.php.bak2, login.php.bak3…. and so on. Not only that this is very messy and confusing, this also leads to system vulnerabilities because now you have buggy versions of the files lying around on your server.
Peace of mind by having backup. Using version control system means the complete copy of your project codes and their histories are preserved in the version control server. Should anything ever happen to your development machine, you’ll always have a backup copy.
Work everywhere. Traditionally, if you want to work home, you’ll have to copy the entire project files and use them to work from home and when you are finished you’ll have to come in the office and copy the file back. If you forgot to do this, then there will be no other way to work remotely. Some people would suggest downloading the codes from the live server, however that is insecure and can impact the performance of the production server.
Enhanced teamwork. Ever work on a code only to be overwritten by others or yourself? Well, that has happened to me before and it wasn’t fun. You can’t blame anyone either, it’s just the way it is, no one knows about your code and there’s no way to check it. So using a version control system will prevent this from happening as conflicting code will be detected.
The above are just a few examples of the advantages of using code version control system. There are many more if I choose to explore, but you’ll get the picture by now. It doesn’t matter if you are a solo developer, occasional developer or a full project team; you’ll have to invest on a version control system be it in-house or hosted.
Below is a list of suggested version control systems, at this day and age though I won’t be suggesting CVS and SVN as they are centralised and inflexible. I would suggest using distributed version control systems:
- Git. Git is an amazing distributed version control system, at first it isn’t very easy to use but after a while you won’t be able to develop without it. If you have the infrastructure, it’s possible to host a Git server internally. However if you do not want to host it, you can always explore the use of software as a service options such as github, bitbucket, beanstalk
- Mercurial. Mercurial is equally great, this is another distributed version control system that you will have to try. Like Git, Mercurial allows developers to work offline then push their changes to the server whenever they can connect to the server. If there are conflicting changes, it’s very easy to merge between different heads, especially when using GUI tools suck as TortoiseHG. As usual, you can either host the repository server yourself or use the services such as bitbucket and beanstalk.
- Bazaar. This version control project is sponsored by Canonical, the company that backed Ubuntu Linux. The version control looks promising and similar to both Git and Mercurial. To be honest I have yet to try this version control system myself, however if you are interested and decided to try, do leave some comments on this blog for others to find out about your experience with it.
So there you go, with all those free open source options, any developers on this planet should explore the use of version control system. The documentations on all the official websites of those systems are generally pretty good and using great GUI such as Tortoise HG and SourceTree for Mac, almost anyone can use it once they get used to it.
So now that we have talked about version control from technical perspective, let’s talk about the business application.bazaar, git, hg, mercurial
Categorised in: Business Process