<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def github_tags_newer(github_repo, versions_file, update_majors):
 """ Get new tags from a github repository. Cannot use github API because it doesn't support chronological ordering of tags. @param github_repo: the github repository, e.g. 'drupal/drupal/'. @param versions_file: the file path where the versions database can be found. @param update_majors: major versions to update. If you want to update the 6.x and 7.x branch, you would supply a list which would look like ['6', '7'] @return: a boolean value indicating whether an update is needed @raise MissingMajorException: A new version from a newer major branch is exists, but will not be downloaded due to it not being in majors. """

    github_repo = _github_normalize(github_repo)
    vf = VersionsFile(versions_file)
    current_highest = vf.highest_version_major(update_majors)

    tags_url = '%s%stags' % (GH, github_repo)
    resp = requests.get(tags_url)
    bs = BeautifulSoup(resp.text, 'lxml')

    gh_versions = []
    for header in bs.find_all('h4'):
        tag = header.findChild('a')
        if not tag:
            continue # Ignore learn more header.
        gh_versions.append(tag.text.strip())

    newer = _newer_tags_get(current_highest, gh_versions)

    return len(newer) > 0