gen

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2025 License: MIT Imports: 0 Imported by: 0

README

Git o(n) OCI (gnoci)

GitHub release (latest SemVer) dagger Coverage Go Report Card License

Pronounced as gnocchi.

This project has three main objectives:

  1. Define a specification for storing Git repositories as OCI artifacts.
  2. Implement a Git remote helper to facilitate conversions of local Git repositories into remote OCI artifacts.
  3. Implement a Git LFS remote helper to support conversions of Git LFS pointer files.

OCI Specification

The data model for storing Git repositories in OCI compliant registries follows the OCI image-spec. In particular, the data model is packaged as defined by the image manifest spec guidelines for artifact usage.

Refer to the Git OCI Artifact Specification.

Git Remote Helper for OCI Registries

git-remote-oci is a Git remote helper that implements a custom protocol for interacting with Git repositories stored in OCI compliant registries. It is designed to allow users to interact with git as they normally do in their day-to-day workflows, but use an OCI registry as remote storage.

git-remote-oci supports:

  • Cloning
  • Fetching/Pulling
  • Pushing
  • Evaluating remote references
  • Any native Git actions involving a remote

git-remote-oci does not require git-lfs-remote-oci.

Git LFS Remote Helper for OCI Registries

git-lfs-remote-oci is a Git LFS custom transfer agent that implements the Git LFS custom transfer protocol. Specifically, it is a standalone transfer agent that does not require an LFS API server.

git-lfs-remote-oci supports all git-lfs features that involve a remote.

git-lfs-remote-oci does not require git-remote-oci.

Purpose

Why use OCI registries as remote storage for Git repositories?

Existing tools, such as Zarf and the ASCE Data Tool, provide solutions for moving OCI images and artifacts across air-gapped environments. The primary use-case for the oci remote helper protocol is to efficiently transfer and store Git repositories in OCI registries to complement the air-gap capabilities of these tools.

For more information see the project proposal.

Documentation

The documentation for git-remote-oci and git-lfs-remote-oci is organized as follows:

  • Installation Guide: how to install git-remote-oci and git-lfs-remote-oci from source.
  • Quick Start Guide: provides initial usage of and configuration for git-remote-oci and git-lfs-remote-oci.
  • User Guide: provides usage examples.
  • OCI Specification: defines the Git OCI artifact specification.
  • Data Model: extends the specification by discussing the data model, intended for developers.
  • Sequence Diagrams: outline how git, git-remote-oci, git-lfs, and git-lfs-remote-oci interact with one another.

How to Contribute

Support

Code Coverage

Coverage

Documentation

Overview

Package gen defines auto-generation directives.

Directories

Path Synopsis
cmd
git-lfs-remote-oci command
Package main is the main CLI package.
Package main is the main CLI package.
git-lfs-remote-oci/cli
Package cli exports the Git Remote Helper for OCI Registries command.
Package cli exports the Git Remote Helper for OCI Registries command.
git-remote-oci command
Package main is the main CLI package.
Package main is the main CLI package.
git-remote-oci/cli
Package cli exports the Git Remote Helper for OCI Registries command.
Package cli exports the Git Remote Helper for OCI Registries command.
Package docs provides utilities for embeding documentation.
Package docs provides utilities for embeding documentation.
internal
actions
Package actions holds actions called by the root git-remote-oci command.
Package actions holds actions called by the root git-remote-oci command.
cli
Package cli defines CLI commands.
Package cli defines CLI commands.
cmd
Package cmd implements utilities for interpreting, handling, responding to commands sent by Git.
Package cmd implements utilities for interpreting, handling, responding to commands sent by Git.
gen command
Package main is the main package.
Package main is the main package.
git
Package git provides interfaces go-git concrete types.
Package git provides interfaces go-git concrete types.
logutil
Package logutil provides logging convenience functions.
Package logutil provides logging convenience functions.
mocks/gitmock
Package gitmock is a generated GoMock package.
Package gitmock is a generated GoMock package.
mocks/httpmock
Package httpmock is a generated GoMock package.
Package httpmock is a generated GoMock package.
mocks/iomock
Package iomock is a generated GoMock package.
Package iomock is a generated GoMock package.
mocks/modelmock
Package modelmock mocks pkg model.
Package modelmock mocks pkg model.
model
Package model provides utility functions for modeling a git repository in OCI.
Package model provides utility functions for modeling a git repository in OCI.
ociutil
Package ociutil provides utility functions for interacting with OCI registries.
Package ociutil provides utility functions for interacting with OCI registries.
progress
Package progress facilitates tracking progress for a standard library io.Reader.
Package progress facilitates tracking progress for a standard library io.Reader.
progress/progressmock
Package progressmock is a generated GoMock package.
Package progressmock is a generated GoMock package.
refcomp
Package refcomp provides utilities for comparing local and remote git references.
Package refcomp provides utilities for comparing local and remote git references.
testutils
Package testutils provides utility functions for building testdata.
Package testutils provides utility functions for building testdata.
pkg
apis
Package apis defines api schemas.
Package apis defines api schemas.
apis/gnoci.act3-ai.io/v1alpha1
Package v1alpha1 defines the v1alpha1 schema.
Package v1alpha1 defines the v1alpha1 schema.
oci
Package oci defines OCI compliant metadata types.
Package oci defines OCI compliant metadata types.
protocol
Package protocol provides utilities for handling Git and Git LFS custom transfer protocols.
Package protocol provides utilities for handling Git and Git LFS custom transfer protocols.
protocol/git
Package git defines types used in the Git remote helpers protocol.
Package git defines types used in the Git remote helpers protocol.
protocol/git/comms
Package comms facilitates receiving requests from and writing responses to Git via the remote helpers protocol.
Package comms facilitates receiving requests from and writing responses to Git via the remote helpers protocol.
protocol/lfs
Package lfs defines types used in the Git LFS custom transfer protocol.
Package lfs defines types used in the Git LFS custom transfer protocol.
protocol/lfs/comms
Package comms facilitates receiving requests from and writing responses to git-lfs.
Package comms facilitates receiving requests from and writing responses to git-lfs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL