Commit 731b6be9c929d9117c322c605a7f53a8319751cd
1 parent
ac525a74
Exists in
master
and in
4 other branches
Handle app crash on huge commits
Showing
2 changed files
with
12 additions
and
4 deletions
Show diff stats
app/contexts/commit_load.rb
... | ... | @@ -5,7 +5,8 @@ class CommitLoad < BaseContext |
5 | 5 | suppress_diff: false, |
6 | 6 | line_notes: [], |
7 | 7 | notes_count: 0, |
8 | - note: nil | |
8 | + note: nil, | |
9 | + status: :ok | |
9 | 10 | } |
10 | 11 | |
11 | 12 | commit = project.commit(params[:id]) |
... | ... | @@ -14,11 +15,17 @@ class CommitLoad < BaseContext |
14 | 15 | commit = CommitDecorator.decorate(commit) |
15 | 16 | line_notes = project.commit_line_notes(commit) |
16 | 17 | |
17 | - result[:suppress_diff] = true if commit.diffs.size > 200 && !params[:force_show_diff] | |
18 | 18 | result[:commit] = commit |
19 | 19 | result[:note] = project.build_commit_note(commit) |
20 | 20 | result[:line_notes] = line_notes |
21 | 21 | result[:notes_count] = line_notes.count + project.commit_notes(commit).count |
22 | + | |
23 | + begin | |
24 | + result[:suppress_diff] = true if commit.diffs.size > 200 && !params[:force_show_diff] | |
25 | + rescue Grit::Git::GitTimeout | |
26 | + result[:suppress_diff] = true | |
27 | + result[:status] = :huge_commit | |
28 | + end | |
22 | 29 | end |
23 | 30 | |
24 | 31 | result | ... | ... |
app/controllers/commits_controller.rb
... | ... | @@ -41,8 +41,9 @@ class CommitsController < ApplicationController |
41 | 41 | return git_not_found! |
42 | 42 | end |
43 | 43 | |
44 | - rescue Grit::Git::GitTimeout | |
45 | - render "huge_commit" | |
44 | + if result[:status] == :huge_commit | |
45 | + render "huge_commit" and return | |
46 | + end | |
46 | 47 | end |
47 | 48 | |
48 | 49 | def compare | ... | ... |