From 3660f8cbcede1ec65f464a0b7b24cabed9639c97 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 1 Aug 2016 17:38:37 +0800 Subject: [PATCH] =?UTF-8?q?gitlab=E7=9B=B8=E5=85=B3=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/pull_requests_controller.rb | 48 +++++++++++++++++-- config/routes.rb | 1 + .../lib/gitlab/client/merge_requests.rb | 12 +++++ 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 61fb9c9e4..f44e2bc27 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -1,23 +1,61 @@ class PullRequestsController < ApplicationController before_filter :find_project_and_repository - before_filter :connect_gitlab, :only => [:index, :show] - + before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pr] layout "base_projects" + # 返回json格式 def index - results = @g.merge_requests(@project.gpid) + @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] + g.create_merge_request(@project.gpid, :title => title, :description => description, :source_branch => source_branch, :target_branch => target_branch) end def show - + + 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_pr + commit_id = parmas[:commit_id] + status = @g.accept_pull_rquest(@project.gpid, commit_id) + if status == '200' + # 需跳入的地方 + end end private diff --git a/config/routes.rb b/config/routes.rb index 4a67cbfe3..9194dd866 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -809,6 +809,7 @@ RedmineApp::Application.routes.draw do collection do end member do + post 'accept_pr' end end diff --git a/lib/gitlab-cli/lib/gitlab/client/merge_requests.rb b/lib/gitlab-cli/lib/gitlab/client/merge_requests.rb index 1ccc25081..ec7e1563e 100644 --- a/lib/gitlab-cli/lib/gitlab/client/merge_requests.rb +++ b/lib/gitlab-cli/lib/gitlab/client/merge_requests.rb @@ -94,6 +94,18 @@ class Gitlab::Client get("/projects/#{project}/merge_request/#{id}/comments") end + # 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_rquest(project, id) + put("/projects/#{project}/merge_request/#{id}/merge") + end + private def check_attributes!(options, attrs)