class Git::Object::AbstractObject::Tag

A Git tag object

This class represents a tag in Git, which can be either annotated or lightweight.

Annotated tags contain additional metadata such as the tagger’s name, email, and the date when the tag was created, along with a message.

TODO: Annotated tags are not objects

Attributes

name[RW]

Public Class Methods

new(base, sha, name = nil) click to toggle source

@overload initialize(base, name)

@param base [Git::Base] The Git base object
@param name [String] The name of the tag

@overload initialize(base, sha, name)

@param base [Git::Base] The Git base object
@param sha [String] The SHA of the tag object
@param name [String] The name of the tag
Calls superclass method Git::Object::AbstractObject::new
# File lib/git/object.rb, line 265
def initialize(base, sha, name = nil)
  if name.nil?
    name = sha
    sha = base.lib.tag_sha(name)
    raise Git::UnexpectedResultError, "Tag '#{name}' does not exist." if sha == ''
  end

  super(base, sha)

  @name = name
  @annotated = nil
  @loaded = false
end

Public Instance Methods

annotated?() click to toggle source
# File lib/git/object.rb, line 279
def annotated?
  @annotated = @annotated.nil? ? (@base.lib.cat_file_type(name) == 'tag') : @annotated
end
message() click to toggle source
# File lib/git/object.rb, line 283
def message
  check_tag
  @message
end
tag?() click to toggle source
# File lib/git/object.rb, line 288
def tag?
  true
end
tagger() click to toggle source
# File lib/git/object.rb, line 292
def tagger
  check_tag
  @tagger
end

Private Instance Methods

check_tag() click to toggle source
# File lib/git/object.rb, line 299
def check_tag
  return if @loaded

  if annotated?
    tdata = @base.lib.cat_file_tag(@name)
    @message = tdata['message'].chomp
    @tagger = Git::Author.new(tdata['tagger'])
  else
    @message = @tagger = nil
  end

  @loaded = true
end