diff options
author | Boyan Tabakov <boyan.tabakov@futurice.com> | 2013-09-04 10:33:09 +0300 |
---|---|---|
committer | Boyan Tabakov <boyan.tabakov@futurice.com> | 2013-09-07 14:44:03 +0300 |
commit | 01ff084a4df76ba0856a513aca9bdf8f1d550365 (patch) | |
tree | d90ef89169f4e53dc702172b3f3b01a030619549 /app/contexts/commit_load_context.rb | |
parent | 71d31a38fc73252a76076820c63d054a8047d667 (diff) | |
download | gitlab-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.rb | 3 |
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 |