Xgit v0.7.1 Xgit.Repository.OnDisk View Source

Implementation of Xgit.Repository.Storage that stores content on the local file system.

IMPORTANT NOTE: This is intended as a reference implementation largely for testing purposes and may not necessarily handle all of the edge cases that the traditional git command-line interface will handle.

That said, it does intentionally use the same .git folder format as command-line git so that results may be compared for similar operations.

Link to this section Summary

Functions

Returns a specification to start this module under a supervisor.

Creates a new, empty git repository on the local file system.

Start an on-disk git repository.

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Link to this function

create(work_dir)

View Source
create(work_dir :: Path.t()) :: :ok | {:error, :work_dir_must_not_exist}

Creates a new, empty git repository on the local file system.

Analogous to git init.

NOTE: We use the name create here so as to avoid a naming conflict with GenServer.init/1.

Parameters

work_dir (String) is the top-level working directory. A .git directory is created inside this directory.

Return Value

:ok if created successfully.

{:error, :work_dir_must_not_exist} if work_dir already exists.

Link to this function

start_link(opts)

View Source
start_link([{:work_dir, Path.t()}]) :: GenServer.on_start()

Start an on-disk git repository.

Use the functions in Xgit.Repository.Storage to interact with this repository process.

An Xgit.Repository.WorkingTree will be automatically created and attached to this repository.

Options

  • :work_dir (required): Top-level working directory. A .git directory should exist at this path. Use create/1 to create an empty on-disk repository if necessary.

Any other options are passed through to GenServer.start_link/3.

Return Value

See GenServer.start_link/3.

{:error, :work_dir_invalid} if work_dir is missing or not a String.