code: def remove_tag(self, name, user, message=None, date=None):
          
          if name not in self.tags:
              raise TagDoesNotExistError("Tag %s does not exist" % name)
          if message is None:
              message = "Removed tag %s" % name
          if date is None:
              date = datetime.datetime.now().ctime()
          local = False
  
          try:
              self._repo.tag(name, nullid, message, local, user, date)
              self.tags = self._get_tags()
          except Abort, e:
              raise RepositoryError(e.message)
docs: Removes tag with the given ``name``.
  
          :param name: name of the tag to be removed
          :param user: full username, i.e.: "Joe Doe <joe.doe@example.com>"
          :param message: message of the tag's removal commit
          :param date: date of tag's removal commit
  
          :raises TagDoesNotExistError: if tag with given name does not exists