summaryrefslogtreecommitdiff
path: root/app/contexts/commit_load_context.rb
diff options
context:
space:
mode:
authorBoyan Tabakov <boyan.tabakov@futurice.com>2013-09-04 10:33:09 +0300
committerBoyan Tabakov <boyan.tabakov@futurice.com>2013-09-07 14:44:03 +0300
commit01ff084a4df76ba0856a513aca9bdf8f1d550365 (patch)
treed90ef89169f4e53dc702172b3f3b01a030619549 /app/contexts/commit_load_context.rb
parent71d31a38fc73252a76076820c63d054a8047d667 (diff)
downloadgitlab-ce-01ff084a4df76ba0856a513aca9bdf8f1d550365.tar.gz
Improved large commit handling.
Previously, only number of changed files mattered. Now, number of lines to render in the diff are also taken into account. A hard limit is set, above which diffs are not rendered and users are not allowed to override that. This prevents high server resource usage with huge commits. Related to #1745, #2259 In addition, handle large commits for MergeRequests and Compare controllers. Also fixes a bug where diffs are loaded twice, if user goes directly to merge_requests/:id/diffs URL.
Diffstat (limited to 'app/contexts/commit_load_context.rb')
-rw-r--r--app/contexts/commit_load_context.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/app/contexts/commit_load_context.rb b/app/contexts/commit_load_context.rb
index 2cf5420d62d..2930c5b1668 100644
--- a/app/contexts/commit_load_context.rb
+++ b/app/contexts/commit_load_context.rb
@@ -20,7 +20,8 @@ class CommitLoadContext < BaseContext
result[:notes_count] = project.notes.for_commit_id(commit.id).count
begin
- result[:suppress_diff] = true if commit.diffs.size > Commit::DIFF_SAFE_SIZE && !params[:force_show_diff]
+ result[:suppress_diff] = true if commit.diff_suppress? && !params[:force_show_diff]
+ result[:force_suppress_diff] = commit.diff_force_suppress?
rescue Grit::Git::GitTimeout
result[:suppress_diff] = true
result[:status] = :huge_commit