ae88355bb8
Signed-off-by: Rémy Coutable <remy@rymai.me>
43 lines
1,013 B
Ruby
43 lines
1,013 B
Ruby
module Gitlab
|
|
module Git
|
|
class RevList
|
|
attr_reader :oldrev, :newrev, :path_to_repo
|
|
|
|
def initialize(path_to_repo:, newrev:, oldrev: nil)
|
|
@oldrev = oldrev
|
|
@newrev = newrev
|
|
@path_to_repo = path_to_repo
|
|
end
|
|
|
|
# This method returns an array of new references
|
|
def new_refs
|
|
execute([*base_args, newrev, '--not', '--all'])
|
|
end
|
|
|
|
# This methods returns an array of missed references
|
|
def missed_ref
|
|
execute([*base_args, '--max-count=1', oldrev, "^#{newrev}"])
|
|
end
|
|
|
|
private
|
|
|
|
def execute(args)
|
|
output, status = Gitlab::Popen.popen(args, nil, Gitlab::Git::Env.all.stringify_keys)
|
|
|
|
unless status.zero?
|
|
raise "Got a non-zero exit code while calling out `#{args.join(' ')}`."
|
|
end
|
|
|
|
output.split("\n")
|
|
end
|
|
|
|
def base_args
|
|
[
|
|
Gitlab.config.git.bin_path,
|
|
"--git-dir=#{path_to_repo}",
|
|
'rev-list'
|
|
]
|
|
end
|
|
end
|
|
end
|
|
end
|