class Bringit::Ref

Attributes

dereferenced_target[R]

Dereferenced target Commit object to which the Ref points to

name[R]

Branch or tag name without “refs/tags|heads” prefix

target[R]

Target sha. Usually it is commit sha but in case when tag reference on other tag it can be tag sha

Public Class Methods

dereference_object(object) click to toggle source
# File lib/bringit/ref.rb, line 35
def self.dereference_object(object)
  object = object.target while object.is_a?(Rugged::Tag::Annotation)

  object
end
extract_branch_name(str) click to toggle source

Extract branch name from full ref path

Ex.

Ref.extract_branch_name('refs/heads/master') #=> 'master'
# File lib/bringit/ref.rb, line 31
def self.extract_branch_name(str)
  str.gsub(/\Arefs\/heads\//, '')
end
name_valid?(name) click to toggle source
# File lib/bringit/ref.rb, line 5
def self.name_valid?(name)
  if name.start_with?('refs/heads/') || name.start_with?('refs/remotes/')
    return false
  end

  Popen.popen(%W(git check-ref-format refs/#{name})).last == 0
end
new(repository, name, target) click to toggle source
# File lib/bringit/ref.rb, line 41
def initialize(repository, name, target)
  encode! name
  @name = name.gsub(/\Arefs\/(tags|heads)\//, '')
  @dereferenced_target = Bringit::Commit.find(repository, target)
  @target = if target.respond_to?(:oid)
              target.oid
            elsif target.respond_to?(:name)
              target.name
            elsif target.is_a? String
              target
            else
              nil
            end
end