'Tags the current branch\'s HEAD with the next semver tag.
Returns:
[VersionBump]: The version bump used to tag the git repository, or None
if the tagging fails.'

def tag_head(self):

    if self.__is_head_current():
        if self.__next_tag:
            self.__tag_head_with_build(self.__next_tag)
            run_quick('git    -C    {path}    tag    {next_tag}    HEAD'.format(path=self.path, next_tag=self.__next_tag))
            return VersionBump(self.__next_tag, self.get_head_commit())
        elif self.__force_rebuild:
            self.__tag_head_with_build(self.__current_version.tag)
            run_quick('git    -C    {path}    tag    {next_tag}    HEAD'.format(path=self.path, next_tag=self.__current_version.tag))
            return VersionBump(self.__current_version.tag, self.get_head_commit(), patch=True)
        else:
            logging.warn("There    is    already    a    tag    of    the    form    'version-X.Y.Z'    at    HEAD.    Not    forcing    rebuild.")
            return None
    else:
        version_bump = self.determine_new_tag()
        run_quick('git    -C    {path}    tag    {next_tag}    HEAD'.format(path=self.path, next_tag=version_bump.version_str))
        self.__tag_head_with_build(version_bump.version_str)
        return version_bump
