class SimpleGit::Reference

Attributes

ptr[RW]

Private Class Methods

finalize(ptr) click to toggle source
# File lib/simple_git/reference.rb, line 43
def self.finalize(ptr)
  proc { Git2.git_reference_free(ptr) }
end

Public Instance Methods

branch_name() click to toggle source
# File lib/simple_git/reference.rb, line 19
def branch_name
  name_wrapper = FFI::MemoryPointer.new(:pointer)
  ret = Git2.git_branch_name(name_wrapper, @ptr)
  if ret != 0
    error = Git2::GitError.new(Git2.giterr_last)
    raise ArgumentError, error[:message].read_string
  end

  name_wrapper.read_pointer.read_string
end
from_head(repo) click to toggle source
# File lib/simple_git/reference.rb, line 5
def from_head(repo)
  wrapper = ReferenceWrapper.new
  ret = Git2.git_repository_head(wrapper, repo.ptr)
  if ret != 0
    error = Git2::GitError.new(Git2.giterr_last)
    raise ArgumentError, error[:message].read_string
  end

  @ptr = wrapper[:ref]
  ObjectSpace.define_finalizer(self, self.class.finalize(@ptr))

  self
end
to_object() click to toggle source
# File lib/simple_git/reference.rb, line 30
def to_object
  wrapper = SimpleGit::Object::ObjectWrapper.new
  ret = Git2.git_reference_peel(wrapper, @ptr, :GIT_OBJ_ANY)
  if ret != 0
    error = Git2::GitError.new(Git2.giterr_last)
    raise ArgumentError, error[:message].read_string
  end

  Object.new.from_wrapper(wrapper)
end