docs: def get_changelog(repo_path, from_commit=None):
      """
      Given a repo path and an option commit/tag/refspec to start from, will
      get the rpm compatible changelog
  
      Args:
          repo_path (str): path to the git repo
          from_commit (str): refspec (partial commit hash, tag, branch, full
              refspec, partial refspec) to start the changelog from
  
      Returns:
          str: Rpm compatible changelog
      """
      repo = dulwich.repo.Repo(repo_path)
      tags = get_tags(repo)
      refs = get_refs(repo)
      changelog = []
      maj_version = 0
      feat_version = 0
      fix_version = 0
      start_including = False
  
      cur_line = ''
      if from_commit is None:
          start_including = True
  
      for commit_sha, children in reversed(
          get_children_per_first_parent(repo_path).items()
      ):
          commit = repo.get_object(commit_sha)
          maj_version, feat_version, fix_version = get_version(
              commit=commit,
              tags=tags,
              maj_version=maj_version,
              feat_version=feat_version,
              fix_version=fix_version,
          )
          version = '%s.%s.%s' % (maj_version, feat_version, fix_version)
  
          if (
              start_including or commit_sha.startswith(from_commit)
              or fuzzy_matches_refs(from_commit, refs.get(commit_sha, []))
          ):
              cur_line = pretty_commit(
                  commit,
                  version,
              )
              for child in children:
                  cur_line += pretty_commit(repo.get_object(child), version=None)
              start_including = True
              changelog.append(cur_line)
  
      return '\n'.join(reversed(changelog))