#{@message.author_name} #{@message.action_name} #{@message.ref_type} #{@message.ref_name} at #{@message.project_name_with_namespace}
- if @message.compare
  \
  \
  - if @message.reverse_compare?
    WARNING: The push did not contain any new commits, but force pushed to delete the commits and changes below.
    \
    \
  = @message.reverse_compare? ? "Deleted commits:" : "Commits:"
  - @message.commits.each do |commit|
    #{commit.short_id} by #{commit.author_name} at #{commit.committed_date.strftime("%Y-%m-%dT%H:%M:%SZ")}
    #{commit.safe_message}
    \- - - - -
  \
  \
  #{pluralize @message.diffs_count, "changed file"}:
  \
  - @message.diffs.each do |diff|
    - if diff.deleted_file
      \- − #{diff.old_path}
    - elsif diff.renamed_file
      \- #{diff.old_path} → #{diff.new_path}
    - elsif diff.new_file
      \- + #{diff.new_path}
    - else
      \- #{diff.new_path}
  - unless @message.disable_diffs?
    \
    \
    Changes:
    - @message.diffs.each do |diff|
      \
      \=====================================
      - if diff.deleted_file
        #{diff.old_path} deleted
      - elsif diff.renamed_file
        #{diff.old_path} → #{diff.new_path}
      - else
        = diff.new_path
      \=====================================
      != diff.diff
  - if @message.compare_timeout
    \
    \
    Huge diff. To prevent performance issues it was hidden
  - if @message.target_url
    \
    \
    View it on GitLab: #{@message.target_url}
