I have what I believe is a largely subjective question, but I'm interested in how people handle the situation described below. There are many similar questions on programmer stack exchange but none which touch on this precise issue of whether to update a version number to the proposed release before or after the development (that I could find).
I have a system which is live, lets call it version 1.0.x.x I'm using
Major.Minor.Build.Revision Microsoft style versioning.
I get a customer request for some new features, and we decide that this package of work will be the 1.1.x.x release.
When would you update your version number, in development? As you begin work? or as you finish it?
I can see two approaches, neither of which I'm 100% happy with.
Increment the minor version as the development starts, leading to the eventual released software being probably something like 1.1.5562.12589
Keep the version at 1.0.x.x during development, leading to the
testedversion being something like 1.0.5562.12589 and then when I need to update the
versionof the assembly (which we'd do manually for a major or minor release) to 1.1.x.x strictly speaking that version of the code (as I'd have to had rebuilt it to increment the assembly number) hasn't been tested.
What's the preferred approach here?
In terms of pros and cons:
Pros - The version which is released is already 1.1.x.x so the minor number is accurate, and that build/revision represent tested code
Cons - The released version won't be version 188.8.131.52 which to the customer or developer, may look like work has been done post a 184.108.40.206 release, such as bug fixes.
Pros - The version doesn't reach 220.127.116.11 until the development is complete & tested. Meaning there is a clean logical cutoff between work being made on the stable 1.0.x.x version and the deployment of the tested 18.104.22.168 version.
Cons - The version has to be manually adjusted from 1.0.x.x to 22.214.171.124 somewhere after testing but before release. Potentially including untested code if someone has mistakenly checked in the wrong area.
At the moment I'm not sure which is the lesser of two evils as I can see pros to both, as well as cons to both. I'm hoping someone might help me tip the balance or spot something I've missed.