class Bringit::Ref
Attributes
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