code: def sync_fork(gh_token, github_repo_id, repo, push=True):
      
      if not gh_token:
          _LOGGER.warning('Skipping the upstream repo sync, no token')
          return
      _LOGGER.info('Check if repo has to be sync with upstream')
      github_con = Github(gh_token)
      github_repo = github_con.get_repo(github_repo_id)
  
      if not github_repo.parent:
          _LOGGER.warning('This repo has no upstream')
          return
  
      upstream_url = 'https://github.com/{}.git'.format(github_repo.parent.full_name)
      upstream = repo.create_remote('upstream', url=upstream_url)
      upstream.fetch()
      active_branch_name = repo.active_branch.name
      if not active_branch_name in repo.remotes.upstream.refs:
          _LOGGER.info('Upstream has no branch %s to merge from', active_branch_name)
          return
      else:
          _LOGGER.info('Merge from upstream')
      msg = repo.git.rebase('upstream/{}'.format(repo.active_branch.name))
      _LOGGER.debug(msg)
      if push:
          msg = repo.git.push()
          _LOGGER.debug(msg)
docs: Sync the current branch in this fork against the direct parent on Github