Class: Git::Object::Tag

Inherits:
AbstractObject show all
Defined in:
lib/git/object.rb

Overview

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

Instance Attribute Summary collapse

Attributes inherited from AbstractObject

#mode, #objectish, #size, #type

Instance Method Summary collapse

Methods inherited from AbstractObject

#archive, #blob?, #commit?, #contents, #contents_array, #diff, #grep, #log, #sha, #to_s, #tree?

Constructor Details

#initialize(base, name) ⇒ Tag #initialize(base, sha, name) ⇒ Tag

Returns a new instance of Tag.

Overloads:

  • #initialize(base, name) ⇒ Tag

    Parameters:

    • base (Git::Base)

      The Git base object

    • name (String)

      The name of the tag

  • #initialize(base, sha, name) ⇒ Tag

    Parameters:

    • base (Git::Base)

      The Git base object

    • sha (String)

      The SHA of the tag object

    • name (String)

      The name of the tag



265
266
267
268
269
270
271
272
273
274
275
276
277
# 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

Instance Attribute Details

#name

Returns the value of attribute name.



254
255
256
# File 'lib/git/object.rb', line 254

def name
  @name
end

Instance Method Details

#annotated?Boolean

Returns:

  • (Boolean)


279
280
281
# File 'lib/git/object.rb', line 279

def annotated?
  @annotated = @annotated.nil? ? (@base.lib.cat_file_type(name) == 'tag') : @annotated
end

#message



283
284
285
286
# File 'lib/git/object.rb', line 283

def message
  check_tag
  @message
end

#tag?Boolean

Returns:

  • (Boolean)


288
289
290
# File 'lib/git/object.rb', line 288

def tag?
  true
end

#tagger



292
293
294
295
# File 'lib/git/object.rb', line 292

def tagger
  check_tag
  @tagger
end