# class MergeRequestsController

### Public Instance Methods

automerge() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 79
    def automerge
      return access_denied! unless can?(current_user, :accept_mr, @project)
      if @merge_request.open? && @merge_request.can_be_merged?
        @merge_request.should_remove_source_branch = params[:should_remove_source_branch]
        @merge_request.automerge!(current_user)
        @status = true
      else
        @status = false
      end
    end

automerge_check() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 72
    def automerge_check
      if @merge_request.unchecked?
        @merge_request.check_if_can_be_merged
      end
      render json: {state: @merge_request.human_state}
    end

branch_from() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 98
    def branch_from
      @commit = project.commit(params[:ref])
      @commit = CommitDecorator.decorate(@commit)
    end

branch_to() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 103
    def branch_to
      @commit = project.commit(params[:ref])
      @commit = CommitDecorator.decorate(@commit)
    end

create() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 50
    def create
      @merge_request = @project.merge_requests.new(params[:merge_request])
      @merge_request.author = current_user

      if @merge_request.save
        @merge_request.reload_code
        redirect_to [@project, @merge_request], notice: 'Merge request was successfully created.'
      else
        render action: "new"
      end
    end

destroy() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 90
    def destroy
      @merge_request.destroy

      respond_to do |format|
        format.html { redirect_to project_merge_requests_url(@project) }
      end
    end

diffs() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 35
    def diffs
      @diffs = @merge_request.diffs
      @commit = @merge_request.last_commit

      @comments_allowed = true
      @line_notes = @merge_request.notes.where("line_code is not null")
    end

edit() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 47
    def edit
    end

index() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 20
    def index
      @merge_requests = MergeRequestsLoadContext.new(project, current_user, params).execute
    end

new() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 43
    def new
      @merge_request = @project.merge_requests.new(params[:merge_request])
    end

raw() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 31
    def raw
      send_file @merge_request.to_raw
    end

show() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 24
    def show
      respond_to do |format|
        format.html
        format.js
      end
    end

update() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 62
    def update
      if @merge_request.update_attributes(params[:merge_request].merge(author_id_of_changes: current_user.id))
        @merge_request.reload_code
        @merge_request.mark_as_unchecked
        redirect_to [@project, @merge_request], notice: 'Merge request was successfully updated.'
      else
        render action: "edit"
      end
    end

### Protected Instance Methods

authorize_admin_merge_request!() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 118
    def authorize_admin_merge_request!
      return render_404 unless can?(current_user, :admin_merge_request, @merge_request)
    end

authorize_modify_merge_request!() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 114
    def authorize_modify_merge_request!
      return render_404 unless can?(current_user, :modify_merge_request, @merge_request)
    end

define_show_vars() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 135
    def define_show_vars
      # Build a note object for comment form
      @note = @project.notes.new(noteable: @merge_request)

      # Get commits from repository
      # or from cache if already merged
      @commits = @merge_request.commits
      @commits = CommitDecorator.decorate(@commits)
    end

merge_request() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 110
    def merge_request
      @merge_request ||= @project.merge_requests.find(params[:id])
    end

module_enabled() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 122
    def module_enabled
      return render_404 unless @project.merge_requests_enabled
    end

validates_merge_request() click to toggle source

    # File app/controllers/merge_requests_controller.rb, line 126
    def validates_merge_request
      # Show git not found page if target branch doesnt exist
      return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)

      # Show git not found page if source branch doesnt exist
      # and there is no saved commits between source & target branch
      return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
    end