Skip to content

Commit

Permalink
Adding support for creating, updating, and commenting on merge requests.
Browse files Browse the repository at this point in the history
  • Loading branch information
TJ Biddle committed Jul 23, 2013
1 parent 9461c3f commit af42bcb
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions lib/gitlab/client/merge_requests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,83 @@ def merge_requests(project, options={})
def merge_request(project, id)
get("/projects/#{project}/merge_request/#{id}")
end

# Create a merge request.
#
# @example
# Gitlab.create_merge_request(5,
# :source_branch => 'feature_1',
# :target_branch => 'master',
# :title => 'New feature.'
# )
# Gitlab.create_merge_request('gitlab',
# :source_branch => 'feature_1',
# :target_branch => 'master',
# :title => 'New feature.',
# :assignee_id => 1
# )
#
# @param [Integer, String] project The ID or code name of a project.
# @param [Hash] containing attributes to post.
# @return [Array<Gitlab::ObjectifiedHash>]
#
# Accepts source_branch, target_branch, assignee_id, & title in params.
def create_merge_request(project, params={})

raise("Attribute source_branch is required.") unless params.has_key?(:source_branch)
raise("Attribute target_branch is required.") unless params.has_key?(:target_branch)
raise("Attribute title is required.") unless params.has_key?(:title)

post("/projects/#{project}/merge_requests",
:body => params
)
end

# Update a merge request.
#
# @example
# Gitlab.update_merge_request(5, 3,
# :source_branch => 'feature_1',
# :target_branch => 'master',
# :title => 'New feature.'
# )
# Gitlab.update_merge_request('gitlab', 3,
# :source_branch => 'feature_1',
# :target_branch => 'master',
# :title => 'New feature.',
# :assignee_id => 1
# )
#
# @param [Integer, String] project The ID or code name of a project.
# @param [Hash] containing attributes to post.
# @return [Array<Gitlab::ObjectifiedHash>]
#
# Accepts source_branch, target_branch, assignee_id, & title in params.
def update_merge_request(project, merge_id, params={})
put("/projects/#{project}/merge_request/#{merge_id}",
:body => params
)
end

# Comment on a merge request.
#
# @example
# Gitlab.comment_merge_request(5, 1, "Awesome merge!")
# Gitlab.comment_merge_request('gitlab', 1, "Awesome merge!")
#
# @param [Integer, String] project The ID or code name of a project.
# @param [Hash] containing attributes to post.
# @return [Array<Gitlab::ObjectifiedHash>]
#
# Accepts note (And alias, comment)
def comment_merge_request(project, merge_id, params={})
params[:note] = params[:comment] if params.has_key?(:comment)
raise("Attribute note is required.") unless params.has_key?(:note)

post("/projects/#{project}/merge_request/#{merge_id}/comments",
:body => params
)
end

end
end

0 comments on commit af42bcb

Please sign in to comment.