def full_changelog(first_parent: false, range: nil, branch: nil, from_ancestor_with: nil)
      changelog_list = changelog first_parent: first_parent, range: range, branch: branch, from_ancestor_with: from_ancestor_with
      if !range.nil?
        header = full_changelog_header_range range
      elsif !branch.nil?
        header = full_changelog_header_branch branch, from_ancestor_with
      else
        header = full_changelog_header_no_range
      end
      [header, changelog_list].join "\n"
    end
def full_changelog(first_parent: false, range: nil, branch: nil, from_ancestor_with: nil)
      changelog_list = changelog first_parent: first_parent, range: range, branch: branch, from_ancestor_with: from_ancestor_with
      if !range.nil?
        header = full_changelog_header_range range
      elsif !branch.nil?
        header = full_changelog_header_branch branch, from_ancestor_with
      else
        header = full_changelog_header_no_range
      end
      [header, changelog_list].join "\n"
    end
Get the full changelog including metadata.
 @param [Boolean] first_parent Optional, if true limits to first parent commits
 @param [String] range Optional, define a specific range of commits
 @param [String] branch Optional, show commits in a branch
 @param [String] from_ancestor_with Optional, from common ancestor with this branch
 @return [String] changelog