Skip to contents

Creates a new file in a GitLab repository via the POST /projects/{id_project}/repository/files/{path} endpoint of GitLab's v4 RESTful API.

Usage

file_create(
  content,
  path,
  id_project = funky::config_val("id_project"),
  start_branch = project_default_branch(id_project = id_project, base_url = base_url,
    token = token, max_tries = max_tries),
  branch = start_branch,
  commit_message = "auto: create file via gitlab R pkg",
  author_email = NULL,
  author_name = NULL,
  encoding = c("text", "base64"),
  execute_filemode = FALSE,
  base_url = funky::config_val("base_url"),
  token = funky::config_val("token"),
  max_tries = 3L
)

Arguments

content

character(1) or raw()
File content, as a character scalar for text files, or a raw vector for binary files. Or the path to a local file as a character scalar if from_file = TRUE.

path

character(1)
File path, relative to the repository root.

id_project

integer(1)
GitLab project identifier.

start_branch

character(1)
Name of the base branch to create branch from if it doesn't already exist.

branch

character(1)
Git branch name to upload the file to.

commit_message

character(1)
Git commit message.

author_email

character(1)
Git commit author's email address. NULL means to default to the token owner.

author_name

character(1)
Git commit author's name. NULL means to default to the token owner.

encoding

character(1)
File encoding. One of "text" or "base64".

execute_filemode

logical(1)
Whether or not to mark the uploaded file as executable.

base_url

character(1)
Base URL to the GitLab v4 RESTful API root.

token

character(1)
GitLab access token used for authentication. If NULL, the API request is made unauthenticated which results in HTTP 404 Not Found and other errors for non-public resources.

max_tries

integer(1)
Maximum number of request attempts in case of an HTTP error. An integerish scalar. Retries are performed using exponential backoff and jitter, see httr2::req_retry() for details.

Value

A list with metadata about the newly created file.

See also

Other functions to manage files on GitLab: commit_files(), file_commit_action(), file_content(), file_delete(), file_exists(), file_full(), file_meta(), file_req(), file_update(), file_write(), files_delete()

Examples

if (FALSE) { # \dontrun{
gitlab::file_create(content = "a line of text",
                    path = "test.md",
                    id_project = 64767928)} # }