module Gitlab::Client::RepositoryFiles

Defines methods related to repository files. @see docs.gitlab.com/ce/api/repository_files.html

Public Instance Methods

create_file(project, path, branch, content, commit_message, options = {}) click to toggle source

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
edit_file(project, path, branch, content, commit_message, options = {}) click to toggle source

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
file_contents(project, filepath, ref = 'master') click to toggle source

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
Also aliased as: repo_file_contents
get_file(project, file_path, ref) click to toggle source

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(project, file_path, ref) click to toggle source

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
remove_file(project, path, branch, commit_message, options = {}) click to toggle source

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
repo_file_contents(project, filepath, ref = 'master')
Alias for: file_contents

Private Instance Methods

encoded_content_attributes(content) click to toggle source
# File lib/gitlab/client/repository_files.rb, line 124
def encoded_content_attributes(content)
  {
    encoding: 'base64',
    content: Base64.encode64(content)
  }
end