ebf98f27c4
Enables frozen string for the following: * lib/gitlab/fogbugz_import/**/*.rb * lib/gitlab/gfm/**/*.rb * lib/gitlab/git/**/*.rb * lib/gitlab/gitaly_client/**/*.rb * lib/gitlab/gitlab_import/**/*.rb * lib/gitlab/google_code_import/**/*.rb * lib/gitlab/gpg/**/*.rb * lib/gitlab/grape_logging/**/*.rb * lib/gitlab/graphql/**/*.rb * lib/gitlab/graphs/**/*.rb * lib/gitlab/hashed_storage/**/*.rb * lib/gitlab/health_checks/**/*.rb Partially address gitlab-org/gitlab-ce#47424.
44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Git
|
|
class Ref
|
|
include Gitlab::EncodingHelper
|
|
|
|
# Branch or tag name
|
|
# without "refs/tags|heads" prefix
|
|
attr_reader :name
|
|
|
|
# Target sha.
|
|
# Usually it is commit sha but in case
|
|
# when tag reference on other tag it can be tag sha
|
|
attr_reader :target
|
|
|
|
# Dereferenced target
|
|
# Commit object to which the Ref points to
|
|
attr_reader :dereferenced_target
|
|
|
|
# Extract branch name from full ref path
|
|
#
|
|
# Ex.
|
|
# Ref.extract_branch_name('refs/heads/master') #=> 'master'
|
|
def self.extract_branch_name(str)
|
|
str.gsub(%r{\Arefs/heads/}, '')
|
|
end
|
|
|
|
def initialize(repository, name, target, dereferenced_target)
|
|
@name = Gitlab::Git.ref_name(name)
|
|
@dereferenced_target = dereferenced_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
|
|
end
|
|
end
|
|
end
|