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