Handle app crash on huge commits
This commit is contained in:
parent
ac525a74ee
commit
731b6be9c9
|
@ -5,7 +5,8 @@ class CommitLoad < BaseContext
|
||||||
suppress_diff: false,
|
suppress_diff: false,
|
||||||
line_notes: [],
|
line_notes: [],
|
||||||
notes_count: 0,
|
notes_count: 0,
|
||||||
note: nil
|
note: nil,
|
||||||
|
status: :ok
|
||||||
}
|
}
|
||||||
|
|
||||||
commit = project.commit(params[:id])
|
commit = project.commit(params[:id])
|
||||||
|
@ -14,11 +15,17 @@ class CommitLoad < BaseContext
|
||||||
commit = CommitDecorator.decorate(commit)
|
commit = CommitDecorator.decorate(commit)
|
||||||
line_notes = project.commit_line_notes(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[:commit] = commit
|
||||||
result[:note] = project.build_commit_note(commit)
|
result[:note] = project.build_commit_note(commit)
|
||||||
result[:line_notes] = line_notes
|
result[:line_notes] = line_notes
|
||||||
result[:notes_count] = line_notes.count + project.commit_notes(commit).count
|
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
|
end
|
||||||
|
|
||||||
result
|
result
|
||||||
|
|
|
@ -41,8 +41,9 @@ class CommitsController < ApplicationController
|
||||||
return git_not_found!
|
return git_not_found!
|
||||||
end
|
end
|
||||||
|
|
||||||
rescue Grit::Git::GitTimeout
|
if result[:status] == :huge_commit
|
||||||
render "huge_commit"
|
render "huge_commit" and return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def compare
|
def compare
|
||||||
|
|
Loading…
Reference in a new issue