I'm working on a Q&A system and about to tag my current application with "1.0.0" for it's first official version/tag. It's about to be rolled out for beta testing to a limited test audience next. Is "1.0.0" correct at this stage?
Also, no doubt there will be many bugs found at that stage. Do I keep it as "1.0.0" but forcefully moving the tag until it's release. Or upon fixing the bugs, would I give it a new tag "1.0.1". Then after another round of testing perhaps "1.0.2"
So when working on enhancements (e.g. new features such as a new menu, new search input field) would these be minor changes as in from "1.0.0" to "1.1.0"?
Best Answer
You mention that you are looking at using semantic versioning, so lets look at the semantic versioning spec at http://semver.org/:
and a little further down:
So if you a releasing a true beta of your 1.0 release, you should tag it
1.0.0-beta
(or similar according to the spec). If you are going to have multiple beta releases as you fix bugs, then1.0.0-beta.1
,1.0.0-beta.2
, etc.When you are adding features that are backwards-compatible, you should increment the MINOR number. If you make lots of internal changes that would cause breaking changes elsewhere in your application, then that is a MAJOR change. If you are making less dramatic changes (for example, you only add code and don't change behavior of existing code), then this would be a MINOR change. If you have a UI heavy application and completely change that UI, I would also say that is a MAJOR change as well (UI can be considered the API for end users).
As for how to add indicators to your git repo, I'd suggest that you first create a
1.x
branch. This will allow you to easily follow everything in version 1 while allowing continued development of version 2 on master. Then you tag the beta release with a tag1.0.0-beta
(or-beta.1
if there will be multiple betas). Once you fix all the bugs you need to fix, tag the actual1.0.0
release. Then tag each release as necessary.You can take a look at some tried-and-true workflows for git like git flow and github flow for ideas of how you want to set up your ongoing workflow.
Also, if you want a little more context about semantic versioning for programs without an API, this answer goes into some depth.