# encoding: utf-8
module BitBucket
class Repos::Commits < API
VALID_KEY_PARAM_NAMES = %w(include exclude pagelen).freeze
# Gets the commit information associated with a repository. By default, this
# call returns all the commits across all branches, bookmarks, and tags. The
# newest commit is first.
#
# = Parameters
# *include - The SHA, branch, bookmark, or tag to include, for example, v10 or master. You can repeat the parameter multiple times.
# *exclude - The SHA, branch, bookmark, or tag to exclude, for example, v10 or master . You can repeat the parameter multiple times.
#
# = Examples
# bitbucket = BitBucket.new
# bitbucket.repos.commits.list 'user-name', 'repo-name'
# bitbucket.repos.commits.list 'user-name', 'repo-name', 'master'
# bitbucket.repos.commits.list 'user-name', 'repo-name' { |key| ... }
# bitbucket.repos.commits.list 'user-name', 'repo-name', nil,
# "include" => "feature-branch",
# "exclude" => "master"
#
def list(user_name, repo_name, branchortag=nil, params={})
_update_user_repo_params(user_name, repo_name)
_validate_user_repo_params(user, repo) unless user? && repo?
normalize! params
filter! VALID_KEY_PARAM_NAMES, params
path = if BitBucket.options[:bitbucket_server]
"/1.0/projects/#{user_name}/repos/#{repo_name}/commits"
else
"/2.0/repositories/#{user}/#{repo.downcase}/commits"
end
path << "/#{branchortag}" if branchortag
response = get_request(path, params)
return response unless block_given?
response.each { |el| yield el }
end
alias :all :list
end # Repos::Commits
end # BitBucket