docs: def _git_fetch_for_comparison(remote: str,
                                actual_branch: str,
                                compare_branch: str,
                                verbose: bool) -> prepared_env.PreparedEnv:
      """Fetches two branches including their common ancestor.
  
      Limits the depth of the fetch to avoid unnecessary work. Scales up the
      depth exponentially and tries again when the initial guess is not deep
      enough.
  
      Args:
          remote: The location of the remote repository, in a format that the
              git command will understand.
          actual_branch: A remote branch or ref to fetch,
          compare_branch: Another remote branch or ref to fetch,
          verbose: When set, more progress output is produced.
  
      Returns:
          A ComparableCommits containing the commit id of the actual branch and
          a the id of a commit to compare against (e.g. for when doing incremental
          checks).
      """
      actual_id = ''
      base_id = ''
      for depth in [10, 100, 1000, None]:
          depth_str = '' if depth is None else '--depth={}'.format(depth)
  
          shell_tools.run_cmd(
              'git',
              'fetch',
              None if verbose else '--quiet',
              remote,
              actual_branch,
              depth_str,
              log_run_to_stderr=verbose)
          actual_id = shell_tools.output_of('git', 'rev-parse', 'FETCH_HEAD')
  
          shell_tools.run_cmd('git',
                              'fetch',
                              None if verbose else '--quiet',
                              remote,
                              compare_branch,
                              depth_str,
                              log_run_to_stderr=verbose)
          base_id = shell_tools.output_of('git', 'rev-parse', 'FETCH_HEAD')
  
          try:
              base_id = shell_tools.output_of(
                  'git',
                  'merge-base',
                  actual_id,
                  base_id)
              break
          except subprocess.CalledProcessError:
              # No common ancestor. We need to dig deeper.
              pass
  
      return prepared_env.PreparedEnv(None, actual_id, base_id, None, None)