json.commits_count @compare_result['CommitsCount']
# json.commits @compare_result['Commits'], partial: 'pull_requests/commit', as: :commit
json.commits do
  json.array! @compare_result['Commits'][@page_offset...(@page_offset + @page_limit)] do |commit|
    json.author do
      json.partial! 'repositories/commit_author', locals: { user: render_cache_commit_author(commit['Committer']), name: commit['Committer']['Name'] }
    end

    json.committer do
      json.partial! 'repositories/commit_author', locals: { user: render_cache_commit_author(commit['Committer']), name: commit['Committer']['Name'] }
    end
    json.timestamp render_unix_time(commit['Committer']['When'])
    json.time_from_now time_from_now(commit['Committer']['When'])
    json.created_at render_format_time_with_date(commit['Committer']['When'])
    json.message commit['CommitMessage']
    json.sha commit['Sha']
  end
end

json.diff do
  if @compare_result['Diff'].blank?
    json.nil!
  else
    json.files_count @compare_result['Diff']['NumFiles']
    json.total_addition @compare_result['Diff']['TotalAddition']
    json.total_deletion @compare_result['Diff']['TotalDeletion']

    # TODO:  解决render partil耗时间问题
    # json.files @compare_result['Diff']['Files'], partial: 'pull_requests/diff_file', as: :file, locals: {sha: @compare_result['LatestSha']}
    json.files do
      json.array! @compare_result['Diff']['Files'] do |file|
        json.sha @compare_result['LatestSha']
        json.name file['Name']
        json.old_name file['OldName']
        json.index file['Index']
        json.addition file['Addition']
        json.deletion file['Deletion']
        json.type file['Type']
        json.isCreated file['IsCreated']
        json.isDeleted file['IsDeleted']
        json.isBin file['IsBin']
        json.isLFSFile file['IsLFSFile']
        json.isRenamed file['IsRenamed']
        json.isSubmodule file['IsSubmodule']
        json.isLFSFile file['IsLFSFile']
        json.sections do
          json.array! file['Sections'] do |section|
            json.fileName section['FileName']
            json.name section['Name']
            json.lines do
              json.array! section['Lines'] do |line|
                json.leftIdx line['LeftIdx']
                json.rightIdx line['RightIdx']
                json.type line['Type']
                json.content line['Content']
                json.sectionInfo do
                  if line['SectionInfo'].blank?
                    json.nil!
                  else
                    json.path line['SectionInfo']['Path']
                    json.lastLeftIdx line['SectionInfo']['LastLeftIdx']
                    json.lastRightIdx line['SectionInfo']['LastRightIdx']
                    json.leftIdx line['SectionInfo']['LeftIdx']
                    json.rightIdx line['SectionInfo']['RightIdx']
                    json.leftHunkSize line['SectionInfo']['LeftHunkSize']
                    json.rightHunkSize line['SectionInfo']['RightHunkSize']
                  end
                end
              end
            end
          end
        end
      end
    end

  end
end
json.status @merge_status
json.message @merge_message