I want to compose application build version that is automatically derived from the Git branch name I am on (when building) and the number of commits since the branch has div
git describe --long would always output version number like this: v1.2-10-gdeadbee, which means 10th commit since annotated tag 'v1.2' that points at commit with shortened SHA-1 'deadbee'. So all you have to do is to tag branch start (branching point of a branch) e.g. <branch>-start.
The abbreviated commit SHA-1 hash is required to distinguish between ambiguous situations, because "3rd commit since tag 'x'" (for example) does not uniquely distinguish a commit; there can be more than one commit that fits mentioned description in the presence of nonlinear, branchy development. For example in the situation shown on the ASCII-art diagram below both commits marked with * fits "3rd commit since tag 'x'" description.
/-.---*---.-\
/ \
.---x---.---.---*---.---M---. <--- branch
Note that in "merged in" case as shown above you can't use branch name to distinguish between those two commits with the same description.
So what you have to do would be to take git describe --long output (the --long option is here to avoid ambiguities with parsing, see git describe manpage), parse it, and add current branch info (from e.g. git symbolic-ref HEAD, not from pasing git branch output) yourself.