Class: Grit::GitRuby::Commit

Inherits:
GitObject show all
Defined in:
lib/grit/git-ruby/git_object.rb

Instance Attribute Summary collapse

Attributes inherited from GitObject

#repository, #sha

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from GitObject

#sha1

Constructor Details

#initialize(tree, parent, author, committer, message, headers, repository = nil) ⇒ Commit

Returns a new instance of Commit



264
265
266
267
268
269
270
271
272
# File 'lib/grit/git-ruby/git_object.rb', line 264

def initialize(tree, parent, author, committer, message, headers, repository=nil)
  @tree = tree
  @author = author
  @parent = parent
  @committer = committer
  @message = message
  @headers = headers
  @repository = repository
end

Instance Attribute Details

#authorObject

Returns the value of attribute author



235
236
237
# File 'lib/grit/git-ruby/git_object.rb', line 235

def author
  @author
end

#committerObject

Returns the value of attribute committer



235
236
237
# File 'lib/grit/git-ruby/git_object.rb', line 235

def committer
  @committer
end

#headersObject

Returns the value of attribute headers



235
236
237
# File 'lib/grit/git-ruby/git_object.rb', line 235

def headers
  @headers
end

#messageObject

Returns the value of attribute message



235
236
237
# File 'lib/grit/git-ruby/git_object.rb', line 235

def message
  @message
end

#parentObject

Returns the value of attribute parent



235
236
237
# File 'lib/grit/git-ruby/git_object.rb', line 235

def parent
  @parent
end

#treeObject

Returns the value of attribute tree



235
236
237
# File 'lib/grit/git-ruby/git_object.rb', line 235

def tree
  @tree
end

Class Method Details

.from_raw(rawobject, repository = nil) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
# File 'lib/grit/git-ruby/git_object.rb', line 237

def self.from_raw(rawobject, repository=nil)
  parent = []
  tree = author = committer = nil

  headers, message = rawobject.content.split(/\n\n/, 2)
  all_headers = headers.split(/\n/).map { |header| header.split(/ /, 2) }
  all_headers.each do |key, value|
    case key
    when "tree"
      tree = value
    when "parent"
      parent.push(value)
    when "author"
      author = UserInfo.new(value)
    when "committer"
      committer = UserInfo.new(value)
    else
      warn "unknown header '%s' in commit %s" % \
        [key, rawobject.sha1.unpack("H*")[0]]
    end
  end
  if not tree && author && committer
    raise RuntimeError, "incomplete raw commit object"
  end
  new(tree, parent, author, committer, message, headers, repository)
end

Instance Method Details

#raw_contentObject



278
279
280
281
282
283
# File 'lib/grit/git-ruby/git_object.rb', line 278

def raw_content
  "tree %s\n%sauthor %s\ncommitter %s\n\n" % [
    @tree,
    @parent.collect { |i| "parent %s\n" % i }.join,
    @author, @committer] + @message
end

#raw_log(sha) ⇒ Object



285
286
287
288
289
# File 'lib/grit/git-ruby/git_object.rb', line 285

def raw_log(sha)
  output = "commit #{sha}\n"
  output += @headers + "\n\n"
  output += @message.split("\n").map { |l| '    ' + l }.join("\n") + "\n\n"
end

#typeObject



274
275
276
# File 'lib/grit/git-ruby/git_object.rb', line 274

def type
  :commit
end