gitexec

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2026 License: AGPL-3.0 Imports: 8 Imported by: 0

Documentation

Overview

Package gitexec wraps the system git binary. gitdr shells out to real git for faithful clone/bundle semantics (and later git-lfs). Auth is injected via GIT_CONFIG_* env, scoped to the clone host, so tokens never reach argv.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LFSAvailable

func LFSAvailable() bool

LFSAvailable reports whether the git-lfs binary is installed.

Types

type Git

type Git struct {
	// contains filtered or unexported fields
}

Git runs git subcommands.

func New

func New(logger *slog.Logger) *Git

New returns a Git runner. A nil logger falls back to slog.Default().

func (*Git) BundleAll

func (g *Git) BundleAll(ctx context.Context, repoDir, bundlePath string) error

BundleAll bundles every ref plus HEAD inside repoDir so `git clone <bundle>` checks out the default branch on restore.

func (*Git) BundleVerify

func (g *Git) BundleVerify(ctx context.Context, bundlePath string) error

BundleVerify runs `git bundle verify bundlePath`.

func (*Git) CloneFromBundle

func (g *Git) CloneFromBundle(ctx context.Context, bundlePath, dir string) error

CloneFromBundle restores a repo by cloning from a bundle file.

func (*Git) CloneMirror

func (g *Git) CloneMirror(ctx context.Context, repoURL, dir string, opts Options) error

CloneMirror runs `git clone --mirror url dir`.

func (*Git) LFSCheckout

func (g *Git) LFSCheckout(ctx context.Context, repoDir string) error

LFSCheckout materializes LFS files in the working tree from local objects (no network).

func (*Git) LFSFetchAll

func (g *Git) LFSFetchAll(ctx context.Context, repoDir, repoURL string, opts Options) error

LFSFetchAll downloads all LFS objects referenced by any ref into repoDir, reusing the clone's host-scoped auth.

type Options

type Options struct {
	// AuthHeader, if set, is sent as an HTTP Authorization header (e.g.
	// "Authorization: Basic ...") scoped to the clone host, via env not argv.
	AuthHeader string
}

Options configures a git invocation.

Jump to

Keyboard shortcuts

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