lib/github_api/client/git_data/commits.rb
# encoding: utf-8
require_relative '../../api'
module Github
class Client::GitData::Commits < API
VALID_COMMIT_PARAM_NAMES = %w[
message
tree
parents
author
committer
name
email
date
].freeze
REQUIRED_COMMIT_PARAMS = %w[
message
tree
parents
].freeze
# Get a commit
#
# @example
# github = Github.new
# github.git_data.commits.get 'user-name', 'repo-name', 'sha'
#
# @example
# commits = Github::Commits.new user: 'user-name', repo: 'repo-name'
# commits.get sha: '...'
#
# @api public
def get(*args)
arguments(args, required: [:user, :repo, :sha])
params = arguments.params
get_request("/repos/#{arguments.user}/#{arguments.repo}/git/commits/#{arguments.sha}", params)
end
alias :find :get
# Create a commit
#
# @param [Hash] params
# @input params [String] :message
# The commit message
# @input params [String] :tree
# String of the SHA of the tree object this commit points to
# @input params [Array[String]] :parents
# Array of the SHAs of the commits that were the parents of this commit.
# If omitted or empty, the commit will be written as a root commit.
# For a single parent, an array of one SHA should be provided,
# for a merge commit, an array of more than one should be provided.
#
# Optional Parameters
#
# You can provide an additional commiter parameter, which is a hash
# containing information about the committer. Or, you can provide an author
# parameter, which is a hash containing information about the author.
#
# The committer section is optional and will be filled with the author
# data if omitted. If the author section is omitted, it will be filled
# in with the authenticated users information and the current date.
#
# Both the author and commiter parameters have the same keys:
#
# @input params [String] :name
# String of the name of the author (or commiter) of the commit
# @input params [String] :email
# String of the email of the author (or commiter) of the commit
# @input params [Timestamp] :date
# Indicates when this commit was authored (or committed).
# This is a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ.
#
# @example
# github = Github.new
# github.git_data.commits.create 'user-name', 'repo-name',
# message: "my commit message",
# author: {
# name: "Scott Chacon",
# email: "schacon@gmail.com",
# date: "2008-07-09T16:13:30+12:00"
# },
# parents: [
# "7d1b31e74ee336d15cbd21741bc88a537ed063a0"
# ],
# tree: "827efc6d56897b048c772eb4087f854f46256132"]
#
# @api public
def create(*args)
arguments(args, required: [:user, :repo]) do
permit VALID_COMMIT_PARAM_NAMES
assert_required REQUIRED_COMMIT_PARAMS
end
post_request("/repos/#{arguments.user}/#{arguments.repo}/git/commits", arguments.params)
end
end # GitData::Commits
end # Github