diff --git a/app/contexts/commit_load.rb b/app/contexts/commit_load.rb index f57c49692ca1edefd9622d36c76eef898ac16604..81fb4925cc8e969379e535b711fece8b1c96a4e4 100644 --- a/app/contexts/commit_load.rb +++ b/app/contexts/commit_load.rb @@ -5,7 +5,8 @@ class CommitLoad < BaseContext suppress_diff: false, line_notes: [], notes_count: 0, - note: nil + note: nil, + status: :ok } commit = project.commit(params[:id]) @@ -14,11 +15,17 @@ class CommitLoad < BaseContext commit = CommitDecorator.decorate(commit) line_notes = project.commit_line_notes(commit) - result[:suppress_diff] = true if commit.diffs.size > 200 && !params[:force_show_diff] result[:commit] = commit result[:note] = project.build_commit_note(commit) result[:line_notes] = line_notes result[:notes_count] = line_notes.count + project.commit_notes(commit).count + + begin + result[:suppress_diff] = true if commit.diffs.size > 200 && !params[:force_show_diff] + rescue Grit::Git::GitTimeout + result[:suppress_diff] = true + result[:status] = :huge_commit + end end result diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb index 861fc3245a9d43e8b1a869e651a8c4c4936d2b3c..717912d9e92eb0b709b9f2ae149ff9244a2eea5f 100644 --- a/app/controllers/commits_controller.rb +++ b/app/controllers/commits_controller.rb @@ -41,8 +41,9 @@ class CommitsController < ApplicationController return git_not_found! end - rescue Grit::Git::GitTimeout - render "huge_commit" + if result[:status] == :huge_commit + render "huge_commit" and return + end end def compare