Please document the naming convention for branches and tags
Could you consider adding a few lines in the README explaining the main branches are named? For a long while I thought the latest "stable" version was missing a year of development. Here is what I eventually figured out. Can you confirm, and maybe summarize and update the readme? Or maybe it is already documented and I just didn't see it...
The current stable version as of this writing is v0.12.0.
Pulling the tip of the master branch will normally get a slightly newer version.
branch 2.1, tag 2.1.9 is the current development branch. Only relevant for those contributing to the code, and/or those that really like the bleeding edge. Looking at the git history it appears to have branched off from master a long time ago, but in reality almost all changes have been merged back to master. There are no obvious merge commits however. This was a major source of confusion as it looked like those consuming v0.12 were missing out on a lot of changes.
Tags do not change. As development continues, new 2.1.* tags are added and the 2.1 branch is fast forwarded to the newest tag.
Tag 1.2.5 is the tip of an older development branch and only has historical interest. Some 1.XX.YY labels are connected using fast forward, others are not and appear as dead ends.
Stable releases are named slightly differently. The code is fast forwarded, possibly all the way up to master, and a new label is created. The old release/0.XX is untagged and a new release/0.YY is created.
As of this writing the most recent stable is branch release/0.12 tag v0.12.0. Note the "v" in the tag that development branches are missing. As with the development branches, tags do not change. The next release will probably be branch release/0.13 tag v0.13.0. Branch release/0.12 gets deleted so if you need it you will have to select the tag or the git hash instead.