# frozen_string_literal: trueclassGitlab::Client# Defines methods related to repositories.# @see https://docs.gitlab.com/ce/api/repositories.htmlmoduleRepositories# Get file tree project (root level).## @example# Gitlab.tree(42)# Gitlab.tree(42, { path: 'Gemfile' })## @param [Integer, String] project The ID or name of a project.# @param [Hash] options A customizable set of options.# @option options [String] :path The path inside repository.# @option options [String] :ref The name of a repository branch or tag.# @option options [Integer] :per_page Number of results to show per page (default = 20)# @return [Gitlab::ObjectifiedHash]deftree(project,options={})get("/projects/#{url_encodeproject}/repository/tree",query: options)endaliasrepo_treetree# Get project repository archive## @example# Gitlab.repo_archive(42)# Gitlab.repo_archive(42, 'deadbeef')## @param [Integer, String] project The ID or name of a project.# @param [String] ref The commit sha, branch, or tag to download.# @param [String] format The archive format. Options are: tar.gz (default), tar.bz2, tbz, tbz2, tb2, bz2, tar, and zip# @return [Gitlab::FileResponse]defrepo_archive(project,ref='master',format='tar.gz')get("/projects/#{url_encodeproject}/repository/archive.#{format}",format: nil,headers: {Accept:'application/octet-stream'},query: {sha: ref},parser: proc{|body,_|ifbody.encoding==Encoding::ASCII_8BIT# binary response::Gitlab::FileResponse.newStringIO.new(body,'rb+')else# error with json response::Gitlab::Request.parse(body)end})end# Compares branches, tags or commits.## @example# Gitlab.compare(42, 'master', 'feature/branch')# Gitlab.repo_compare(42, 'master', 'feature/branch')## @param [Integer] project The ID of a project.# @param [String] from The commit SHA or branch name of from branch.# @param [String] to The commit SHA or branch name of to branch.# @return [Gitlab::ObjectifiedHash]defcompare(project,from,to)get("/projects/#{url_encodeproject}/repository/compare",query: {from: from,to: to})endaliasrepo_comparecompare# Get the common ancestor for 2 refs (commit SHAs, branch names or tags).## @example# Gitlab.merge_base(42, ['master', 'feature/branch'])# Gitlab.merge_base(42, ['master', 'feature/branch'])## @param [Integer, String] project The ID or URL-encoded path of the project.# @param [Array] refs Array containing 2 commit SHAs, branch names, or tags.# @return [Gitlab::ObjectifiedHash]defmerge_base(project,refs)get("/projects/#{url_encodeproject}/repository/merge_base",query: {refs: refs})endendend