diff options
Diffstat (limited to 'app/controllers/projects/commit_controller.rb')
-rw-r--r-- | app/controllers/projects/commit_controller.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/app/controllers/projects/commit_controller.rb b/app/controllers/projects/commit_controller.rb new file mode 100644 index 00000000000..6a2d2315c1d --- /dev/null +++ b/app/controllers/projects/commit_controller.rb @@ -0,0 +1,43 @@ +# Controller for a specific Commit +# +# Not to be confused with CommitsController, plural. +class Projects::CommitController < Projects::ApplicationController + # Authorize + before_filter :authorize_read_project! + before_filter :authorize_code_access! + before_filter :require_non_empty_project + + def show + result = CommitLoadContext.new(project, current_user, params).execute + + @commit = result[:commit] + + if @commit.nil? + git_not_found! + return + end + + @suppress_diff = result[:suppress_diff] + + @note = result[:note] + @line_notes = result[:line_notes] + @notes_count = result[:notes_count] + @target_type = :commit + @target_id = @commit.id + + @comments_allowed = @reply_allowed = true + @comments_target = { noteable_type: 'Commit', + commit_id: @commit.id } + + respond_to do |format| + format.html do + if result[:status] == :huge_commit + render "huge_commit" and return + end + end + + format.diff { render text: @commit.to_diff } + format.patch { render text: @commit.to_patch } + end + end +end |