Tuesday 3 September 2013

Best Practice for Software Development Version Control

This post is slightly off-topic, but when developing it's important that software development needs to be managed on an ongoing basis. One of the best ways to do this is by using version control.

Version control, briefly explained, is the management of changes to documents, computer source or anything that has large collections of information. Version control systems take snapshots of these collections, and any changes to these can be tracked. In terms of software engineering, revision control takes the form of keeping a track of source code, which is my focus when developing my model.

There are three popular version control systems, git, mercurial and subversion. I'm not going to dwell on comparing these. If you need more information on these, just click on the links. Personally, I use git for my version control purposes. What I want to focus on is managing the snapshots. Taking snapshots regularly will allow us to save every change that has happened, but how do you keep track of these changes once your software system grows. What can be done to save the feeling of despair further on in the software development process when the tracking of changes potentially becomes unmanageable.

Here's a good guideline for version control written by Tom Proston-Werner, who is the co-founder of GitHub. He calls it "Semantic Versioning", which provides a simple, yet efficient set of rules and requirements to state how version numbers are assigned. The full post is here, for further details on these guidelines. Quoting from the post directly:

Given a version number MAJOR.MINOR.PATCH, increment the:
  1. MAJOR version when you make incompatible API changes
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes. 
These simple set of rules makes is really easy to see when you've added different types of changes to your source code and go back and forth between them, if necessary. This works for collaborations, or individual development in my opinion.


  1. Acetech software development company is one of the leading software company India.

  2. Its so amazing blog, i really like that Software Development Company.
    Software Development Company in Indore

  3. Thanks for let us know the new version control systems like mercurial and subversion. Also, i like your idea of versions names. Giving a version name along such as MAJOR.MINOR.PATCH is been always a popular tactic among the Software Developers .

  4. I am to a fantastic degree grateful to analyze your blog.I believe you would give the immense relationship in the field of web outlining and change and Search Engine Optimization. Thank for the offer..

    experts of professional web designer services in india

    expert in seo service company in bangalore

    best web developer companies in india

  5. Cost of custom site improvement for your business ought not be viewed as cost. Since this cost is a shrewd speculation.

    Website Development Company Bangalore| Website designers in bangalore

  6. Its so amazing blog,I really like that Software Development Company.

  7. Best Corporate Video Production Company in Bangalore and top Explainer Video Company Bangalore , 3d, 2d Animation Video Makers in Chennai
    Awesome blog !! Thnq so much for this information and This is really helpful to me.

  8. Wow! This can be one particular of the most beneficial blogs We have ever arrive across on this subject. 온라인카지노

  9. I think the admin of this web site is really working hard for his website, because here
    every data is quality based stuff.Click Me Here온라인슬롯


  10. Looking for a reliable Assignment Help Online
    provider to help in the Australia? Don’t worry we got the solution to your problem. We offer all academic assignment services for students within the budget. Visit our website to learn more.