# exgit v0.1.0 - Table of Contents

> Pure-Elixir git: clone, fetch, push over smart HTTP v2 with lazy
partial-clone support and a path-oriented FS API for agents.
No `git` binary, no libgit2, no shelling out.

## Pages

- [Exgit](readme.md)
- [Changelog](changelog.md)
- [Security Policy](security.md)
- [Performance](performance.md)

## Modules

- [Exgit](Exgit.md): Pure-Elixir git client — clone, fetch, push, plus a path-oriented
filesystem API for reading blobs by path.
- [Exgit.Application](Exgit.Application.md): OTP application callback for Exgit.
- [Exgit.Blame](Exgit.Blame.md): Per-line authorship attribution for a file at a ref.
- [Exgit.CloudflareArtifacts](Exgit.CloudflareArtifacts.md): Cloudflare Artifacts REST API client.
- [Exgit.CloudflareArtifacts.Repo](Exgit.CloudflareArtifacts.Repo.md): Cloudflare Artifacts repository.
- [Exgit.CloudflareArtifacts.Token](Exgit.CloudflareArtifacts.Token.md): Cloudflare Artifacts repo-scoped token.
- [Exgit.Config](Exgit.Config.md): Parser and emitter for git-style INI configuration files.
- [Exgit.Credentials](Exgit.Credentials.md): Helpers for constructing transport auth values, plus a small
host-scoped credential mechanism.
- [Exgit.Diff](Exgit.Diff.md): Compare two git trees and return a list of changes.
- [Exgit.Diff.LineDiff](Exgit.Diff.LineDiff.md): Line-level diff between two sequences of lines via Myers diff.
- [Exgit.Error](Exgit.Error.md): Canonical error shape for exgit.
- [Exgit.FS](Exgit.FS.md): Path-oriented read/write access to a git repository — the interface an
agent actually wants.
- [Exgit.Filter](Exgit.Filter.md): Partial-clone filter specs (git protocol v2 `filter` capability).
- [Exgit.Hash](Exgit.Hash.md): Behaviour for a git object-id hash function.
- [Exgit.Hash.SHA1](Exgit.Hash.SHA1.md): SHA-1 implementation of `Exgit.Hash`. Currently the only hash
function used — git's default. SHA-256 repos are not yet
supported.

- [Exgit.Index](Exgit.Index.md): Parser for git's on-disk index format (`.git/index`).
- [Exgit.LFS](Exgit.LFS.md): Git LFS (Large File Storage) pointer detection.
- [Exgit.Object](Exgit.Object.md): Umbrella type + dispatch for git's four object kinds: `Blob`,
`Tree`, `Commit`, `Tag`. Each has its own struct in
`Exgit.Object.*`; this module is the common entry point for
decode/encode/sha/type across all of them.
- [Exgit.Object.Blob](Exgit.Object.Blob.md): Git blob object — a raw byte buffer.

- [Exgit.Object.Commit](Exgit.Object.Commit.md): A git commit object.
- [Exgit.Object.Tag](Exgit.Object.Tag.md): Git annotated tag object.
- [Exgit.Object.Tree](Exgit.Object.Tree.md): A git tree object.
- [Exgit.ObjectStore](Exgit.ObjectStore.md): Storage protocol for git objects, keyed by binary SHA-1.
- [Exgit.ObjectStore.Disk](Exgit.ObjectStore.Disk.md): On-disk git object store — reads and writes objects from
`<root>/objects/` in git's standard layout: loose objects under
`aa/bbbb...` and packed objects via `pack-*.{pack,idx}`.
- [Exgit.ObjectStore.Promisor](Exgit.ObjectStore.Promisor.md): An object store that fetches missing objects on demand from a
transport, caching them locally.
- [Exgit.ObjectStore.SharedPromisor](Exgit.ObjectStore.SharedPromisor.md): GenServer wrapper around `Exgit.ObjectStore.Promisor` that
serializes cache access across processes.
- [Exgit.Pack.Delta](Exgit.Pack.Delta.md): Apply git's pack delta format against a base object.
- [Exgit.Pack.Index](Exgit.Pack.Index.md): Pack-index (`.idx`) writer and reader for git pack-index v2.
- [Exgit.Pack.Reader](Exgit.Pack.Reader.md): Parser for git packfiles (v2 / v3).
- [Exgit.Pack.StreamParser](Exgit.Pack.StreamParser.md): Forward-only, bounded-memory streaming pack parser.
- [Exgit.Pack.Writer](Exgit.Pack.Writer.md): Build a pack (`build/1`) and optionally its `.idx` index
(`build_with_index/1`) from a list of objects.
- [Exgit.PktLine](Exgit.PktLine.md): Git's [pkt-line](https://git-scm.com/docs/gitformat-pack)
framing.
- [Exgit.PktLine.Decoder](Exgit.PktLine.Decoder.md): Incremental, stateful pkt-line decoder for streaming HTTP bodies.
- [Exgit.Profiler](Exgit.Profiler.md): Lightweight profiler that aggregates `:telemetry` span events
into a structured trace.
- [Exgit.RefName](Exgit.RefName.md): Validation of git ref names per [`git check-ref-format`][1] rules.
- [Exgit.RefStore](Exgit.RefStore.md)
- [Exgit.RefStore.Disk](Exgit.RefStore.Disk.md): Filesystem-backed ref store.
- [Exgit.RefStore.Memory](Exgit.RefStore.Memory.md): In-memory implementation of the `Exgit.RefStore` protocol.
- [Exgit.RepoHandle](Exgit.RepoHandle.md): Opt-in process-based handle around a `Repository.t()` value.
- [Exgit.RepoRegistry](Exgit.RepoRegistry.md): Process-wide registry of shared `RepoHandle`s keyed by URL.
- [Exgit.Repository](Exgit.Repository.md): A git repository value.
- [Exgit.Telemetry](Exgit.Telemetry.md): Telemetry event names and conventions for exgit.
- [Exgit.Transport](Exgit.Transport.md): Protocol for git transports — HTTP, file, and user-defined (e.g. SSH
or in-memory). Any struct that implements this protocol can be used
interchangeably with `Exgit.clone/2`, `Exgit.fetch/3`, and
`Exgit.push/3`.
- [Exgit.Transport.File](Exgit.Transport.File.md): `Exgit.Transport` implementation that reads from and writes to a
local on-disk git repository (bare or non-bare) without going
over the network.
- [Exgit.Transport.HTTP](Exgit.Transport.HTTP.md): `Exgit.Transport` implementation for git smart-HTTP v2.
- [Exgit.Walk](Exgit.Walk.md): Commit graph traversal — `ancestors/3` and `merge_base/2`.
- [Exgit.Workspace](Exgit.Workspace.md): An agent-loop working tree on top of a git ref.
- [Exgit.Workspace.VFS](Exgit.Workspace.VFS.md): `VFS.Mountable` defimpl for `Exgit.Workspace`.

