Symbols can be overwritten
Shows how many commits the branch is behind or ahead its upstream
it doesn't display an extra space if  no ahead/behind message needs to be printed
if on a tag, it displays a symbol and the tag name
display of tag name is optional
the number of commits from or to the remote branch is correctly calculated
the number of commits behind or ahead is correct even after a push
tag in last position; has diverged and can fast-forward work
tags are detected correctly