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. The information written in the article is descriptive and well written.It is also simple to read and understand.Good Read.
    Prestashop Theme Developer

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

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

  4. Very Nice information!! I like this Very much !!
    #Kiosk #Computer PC #software and Internet #browser #lockdown #software

    Kiosk Computer PC software

  5. 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 .

  6. 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

  7. 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