Before being able to understand the differences between the three approaches, what kind of problem do the three try to solve in common? In other words, what is versioning used for in the context of the three approaches?
Isn't a new version number created, by simply incrementing the version numbers? Why do we need complicated ways to calcuate version numbers?
If I am correct, the version here is different from the version of software release to users.
ps: If you could go on to explain the the differences between the three methods, that would be great. Otherwise, I will ask for that in a new post.