I believe version numbers should be something that evolves consciously and the owner of the software should be able to judge when to change it. Automating the process sounds irresponsible.
Let me explain a little bit, I don't wanna write too much so im gonna be real simple about it...
I forget to keep track of my progress with versioning all the time, I can never just work on a bunch of code and come up with a structured way to be like this is version 1.0, 1.01, 1.1, etc. I could always just ignore this, but... I desire to have some kind of a versioning system.
So the reason this works for me is:
When I make significant progress, I can just be like "Hey, this is a good one. What build is this?" Wouldn't really be talkin to myself but the point is I can just look at the build number and be like this is build 2838.... I can ask someone who tried out the gui which build they tried, if I wanna regress back to a different build and start over I know which one to start at like build xxxx or whatever, im sure there are other advantages too. The versioning is only set arbritrarily to my taste and can be changed or eliminated altogether. Its just something I made after the fact and thought was cool.
Now one more thing, until I decide, hey this is my save point, the build and version mean absolutely nothing, its just ignored or whatever but when you wanna know how many times you built and ran your program and a prospective version number, its right there waiting. :)