def commit(message, parents = nil, actor = nil, last_tree = nil, head = 'master')
tree_sha1 = write_tree(self.tree, self.current_tree)
return false if tree_sha1 == last_tree
contents = []
contents << ['tree', tree_sha1].join(' ')
parents.each do |p|
contents << ['parent', p].join(' ')
end if parents
if actor
name = actor.name
email = actor.email
else
config = Config.new(self.repo)
name = config['user.name']
email = config['user.email']
end
author_string = "#{name} <#{email}> #{Time.now.to_i} -0700"
contents << ['author', author_string].join(' ')
contents << ['committer', author_string].join(' ')
contents << ''
contents << message
commit_sha1 = self.repo.git.put_raw_object(contents.join("\n"), 'commit')
self.repo.update_ref(head, commit_sha1)
end