in lib/grit/index.rb [102:154]
def commit(message, parents = nil, actor = nil, last_tree = nil, head = 'master')
commit_tree_sha = nil
if parents.is_a?(Hash)
commit_tree_sha = parents[:commit_tree_sha]
actor = parents[:actor]
committer = parents[:committer]
author = parents[:author]
last_tree = parents[:last_tree]
head = parents[:head]
committed_date = parents[:committed_date]
authored_date = parents[:authored_date]
parents = parents[:parents]
end
committer ||= actor
author ||= committer
if commit_tree_sha
tree_sha1 = commit_tree_sha
else
tree_sha1 = write_tree(self.tree, self.current_tree)
end
return false if tree_sha1 == last_tree
contents = []
contents << ['tree', tree_sha1].join(' ')
parents.each do |p|
contents << ['parent', p].join(' ')
end if parents
committer ||= begin
config = Config.new(self.repo)
Actor.new(config['user.name'], config['user.email'])
end
author ||= committer
committed_date ||= Time.now
authored_date ||= committed_date
contents << ['author', author.output(authored_date)].join(' ')
contents << ['committer', committer.output(committed_date)].join(' ')
contents << ''
contents << message
contents = contents.join("\n")
@last_commit_size = contents.size
commit_sha1 = self.repo.git.put_raw_object(contents, 'commit')
self.repo.update_ref(head, commit_sha1) if head
commit_sha1
end