98 lines
3.2 KiB
Ruby
98 lines
3.2 KiB
Ruby
class PullRequestsController < ApplicationController
|
|
before_filter :find_project_and_repository
|
|
before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pull_request, :pull_request_commits, :pull_request_changes]
|
|
layout "base_projects"
|
|
|
|
# 返回json格式
|
|
def index
|
|
@requests = @g.merge_requests(@project.gpid)
|
|
end
|
|
|
|
def new
|
|
end
|
|
|
|
# Creates a merge request.
|
|
# If the operation is successful, 200 and the newly created merge request is returned. If an error occurs, an error number and a message explaining the reason is returned.
|
|
#
|
|
# @example
|
|
# Gitlab.create_merge_request(5, 'New merge request',
|
|
# :source_branch => 'source_branch', :target_branch => 'target_branch')
|
|
# Gitlab.create_merge_request(5, 'New merge request',
|
|
# :source_branch => 'source_branch', :target_branch => 'target_branch', :assignee_id => 42)
|
|
#
|
|
# @param [Integer] project The ID of a project.
|
|
# @param [String] title The title of a merge request.
|
|
# @param [Hash] options A customizable set of options.
|
|
# @option options [String] :source_branch (required) The source branch name.
|
|
# @option options [String] :target_branch (required) The target branch name.
|
|
# @option options [Integer] :assignee_id (optional) The ID of a user to assign merge request.
|
|
# @return [Gitlab::ObjectifiedHash] Information about created merge request.
|
|
def create
|
|
title = params[:title]
|
|
description = params[:description]
|
|
source_branch = params[:source_branch]
|
|
target_branch = params[:target_branch]
|
|
begin
|
|
request = @g.create_merge_request(@project.gpid, title, :description => description, :source_branch => source_branch, :target_branch => target_branch)
|
|
e.message
|
|
respond_to do |format|
|
|
format.html{redirect_to project_pull_requests_path(request.id, :source_branch => source_branch, :target_branch => target_branch)}
|
|
end
|
|
rescue Exception => e
|
|
@message = e.message
|
|
respond_to do |format|
|
|
format.html
|
|
end
|
|
end
|
|
@message
|
|
end
|
|
|
|
def show
|
|
@request = @g.merge_request(@project.gpid, params[:id])
|
|
@commits = @g.merge_request_commits(@project.gpid, params[:id].to_i)
|
|
end
|
|
|
|
# Accept a merge request.
|
|
# If merge success you get 200 OK.
|
|
# Accept a merge request.
|
|
#
|
|
# @example
|
|
# Gitlab.accept_pull_rquest(5, 1)
|
|
#
|
|
# @param [Integer] project The ID of a project.
|
|
# @param [Integer] id The ID of a merge request.
|
|
# @return [Gitlab::ObjectifiedHash]
|
|
def accept_pull_request
|
|
commit_id = parmas[:commit_id]
|
|
status = @g.accept_merge_rquest(@project.gpid, commit_id)
|
|
if status == '200'
|
|
# 需跳入的地方
|
|
end
|
|
end
|
|
|
|
# 获取某次请求的提交次数
|
|
def pull_request_commits
|
|
@commits = @g.merge_request_commits(@project.gpid, params[:id].to_i)
|
|
end
|
|
|
|
# 获取某次请求的改动
|
|
def pull_request_changes
|
|
@type = 2
|
|
@changes = @g.merge_request_changes(@project.gpid, params[:id])
|
|
end
|
|
|
|
private
|
|
def connect_gitlab
|
|
@g = Gitlab.client
|
|
end
|
|
|
|
def find_project_and_repository
|
|
@project = Project.find(params[:project_id])
|
|
render_404 if @project.gpid.blank?
|
|
@repository = Repository.where(:project_id => @project.id, :type => "Repository::Gitlab")
|
|
rescue ActiveRecord::RecordNotFound
|
|
render_404
|
|
end
|
|
|
|
end
|