mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-15 23:56:09 +10:00
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.
28 lines
830 B
Ruby
28 lines
830 B
Ruby
class Projects::CompareController < Projects::ApplicationController
|
|
# Authorize
|
|
before_filter :authorize_read_project!
|
|
before_filter :authorize_code_access!
|
|
before_filter :require_non_empty_project
|
|
|
|
def index
|
|
end
|
|
|
|
def show
|
|
compare = Gitlab::Git::Compare.new(project.repository, params[:from], params[:to])
|
|
|
|
@commits = compare.commits
|
|
@commit = compare.commit
|
|
@diffs = compare.diffs
|
|
@refs_are_same = compare.same
|
|
@line_notes = []
|
|
|
|
diff_line_count = Commit::diff_line_count(@diffs)
|
|
@suppress_diff = Commit::diff_suppress?(@diffs, diff_line_count) && !params[:force_show_diff]
|
|
@force_suppress_diff = Commit::diff_force_suppress?(@diffs, diff_line_count)
|
|
end
|
|
|
|
def create
|
|
redirect_to project_compare_path(@project, params[:from], params[:to])
|
|
end
|
|
end
|