module Gitlab::Client::RepositoryFiles
Defines methods related to repository files. @see docs.gitlab.com/ce/api/repository_files.html
Public Instance Methods
Creates a new repository file.
@example
Gitlab.create_file(42, "path", "branch", "content", "commit message")
@param [Integer, String] project The ID or name of a project. @param [String] path full path to new file. @param [String] branch the name of the branch. @param [String] content file content. @param [String] commit_message …commit message. @param [Hash] options Optional additional details for commit @option options [String] :author_name Commit author’s name @option options [String] :author_email Commit author’s email address @return [Gitlab::ObjectifiedHash]
# File lib/gitlab/client/repository_files.rb, line 73 def create_file(project, path, branch, content, commit_message, options = {}) post("/projects/#{url_encode project}/repository/files/#{url_encode path}", body: { branch: branch, commit_message: commit_message }.merge(options).merge(encoded_content_attributes(content))) end
Edits an existing repository file.
@example
Gitlab.edit_file(42, "path", "branch", "content", "commit message")
@param [Integer, String] project The ID or name of a project. @param [String] path full path of file to update. @param [String] branch the name of the branch to commit changes to. @param [String] content new file content. @param [String] commit_message …commit message. @param [Hash] options Optional additional details for commit @option options [String] :author_name Commit author’s name @option options [String] :author_email Commit author’s email address @return [Gitlab::ObjectifiedHash]
# File lib/gitlab/client/repository_files.rb, line 94 def edit_file(project, path, branch, content, commit_message, options = {}) put("/projects/#{url_encode project}/repository/files/#{url_encode path}", body: { branch: branch, commit_message: commit_message }.merge(options).merge(encoded_content_attributes(content))) end
Get the contents of a file
@example
Gitlab.file_contents(42, 'Gemfile') Gitlab.repo_file_contents(3, 'Gemfile', 'ed899a2f4b50b4370feeea94676502b42383c746')
@param [Integer, String] project The ID or name of a project. @param [String] filepath The relative path of the file in the repository @param [String] ref The name of a repository branch or tag or if not given the default branch. @return [String]
# File lib/gitlab/client/repository_files.rb, line 19 def file_contents(project, filepath, ref = 'master') get "/projects/#{url_encode project}/repository/files/#{url_encode filepath}/raw", query: { ref: ref }, format: nil, headers: { Accept: 'text/plain' }, parser: ::Gitlab::Request::Parser end
Gets a repository file.
@example
Gitlab.get_file(42, "README.md", "master")
@param [Integer, String] project The ID or name of a project. @param [String] file_path The full path of the file. @param [String] ref The name of branch, tag or commit. @return [Gitlab::ObjectifiedHash]
# File lib/gitlab/client/repository_files.rb, line 53 def get_file(project, file_path, ref) get("/projects/#{url_encode project}/repository/files/#{url_encode file_path}", query: { ref: ref }) end
Get file blame from repository
@example
Gitlab.get_file_blame(42, "README.md", "master")
@param [Integer, String] project The ID or name of a project. @param [String] file_path The full path of the file. @param [String] ref The name of branch, tag or commit. @return [Gitlab::ObjectifiedHash]
# File lib/gitlab/client/repository_files.rb, line 38 def get_file_blame(project, file_path, ref) get("/projects/#{url_encode project}/repository/files/#{url_encode file_path}/blame", query: { ref: ref }) end
Removes an existing repository file.
@example
Gitlab.remove_file(42, "path", "branch", "commit message")
@param [Integer, String] project The ID or name of a project. @param [String] path full path of file to delete. @param [String] branch the name of the branch to commit the deletion to. @param [String] commit_message …a commit message ;) @param [Hash] options Optional additional details for commit @option options [String] :author_name Commit author’s name @option options [String] :author_email Commit author’s email address @return [Gitlab::ObjectifiedHash]
# File lib/gitlab/client/repository_files.rb, line 114 def remove_file(project, path, branch, commit_message, options = {}) delete("/projects/#{url_encode project}/repository/files/#{url_encode path}", body: { branch: branch, commit_message: commit_message }.merge(options)) end
Private Instance Methods
# File lib/gitlab/client/repository_files.rb, line 124 def encoded_content_attributes(content) { encoding: 'base64', content: Base64.encode64(content) } end