212967aefb
Signed-off-by: Rémy Coutable <remy@rymai.me>
42 lines
1 KiB
Ruby
42 lines
1 KiB
Ruby
module Gitlab
|
|
module Git
|
|
class RevList
|
|
attr_reader :project, :env
|
|
|
|
ALLOWED_VARIABLES = %w[GIT_OBJECT_DIRECTORY GIT_ALTERNATE_OBJECT_DIRECTORIES].freeze
|
|
|
|
def initialize(oldrev, newrev, project:, env: nil)
|
|
@project = project
|
|
@env = env.presence || {}
|
|
@args = [Gitlab.config.git.bin_path,
|
|
"--git-dir=#{project.repository.path_to_repo}",
|
|
"rev-list",
|
|
"--max-count=1",
|
|
oldrev,
|
|
"^#{newrev}"]
|
|
end
|
|
|
|
def execute
|
|
Gitlab::Popen.popen(@args, nil, parse_environment_variables)
|
|
end
|
|
|
|
def valid?
|
|
environment_variables.all? do |(name, value)|
|
|
value.to_s.start_with?(project.repository.path_to_repo)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def parse_environment_variables
|
|
return {} unless valid?
|
|
|
|
environment_variables
|
|
end
|
|
|
|
def environment_variables
|
|
@environment_variables ||= env.slice(*ALLOWED_VARIABLES).compact
|
|
end
|
|
end
|
|
end
|
|
end
|