module Gitlab module Git BLANK_SHA = ('0' * 40).freeze TAG_REF_PREFIX = "refs/tags/".freeze BRANCH_REF_PREFIX = "refs/heads/".freeze CommandError = Class.new(StandardError) class << self include Gitlab::EncodingHelper def ref_name(ref) encode! ref.sub(/\Arefs\/(tags|heads|remotes)\//, '') end def branch_name(ref) ref = ref.to_s if self.branch_ref?(ref) self.ref_name(ref) else nil end end def committer_hash(email:, name:) return if email.nil? || name.nil? { email: email, name: name, time: Time.now } end def tag_name(ref) ref = ref.to_s if self.tag_ref?(ref) self.ref_name(ref) else nil end end def tag_ref?(ref) ref.start_with?(TAG_REF_PREFIX) end def branch_ref?(ref) ref.start_with?(BRANCH_REF_PREFIX) end def blank_ref?(ref) ref == BLANK_SHA end def version Gitlab::VersionInfo.parse(Gitlab::Popen.popen(%W(#{Gitlab.config.git.bin_path} --version)).first) end end end end