Help us shape the future of Go! Take the 2026 Go Developer Survey

gitstate

package
v0.0.87 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const ThinPackArtifactName = "__git_state_thin_pack__"

Variables

This section is empty.

Functions

This section is empty.

Types

type Controller

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

Controller orchestrates cloning, restoring, and persisting git state per activity invocation.

func NewController

func NewController(adapters map[string]StorageAdapter) *Controller

NewController constructs a Controller with the supplied adapters. If nil, a default file adapter is used.

func (*Controller) Persist

Persist captures repository changes, writes thin packs, and returns the commit output and a thin pack artifact (or nil if no changes).

func (*Controller) PersistWithDiffs

PersistWithDiffs captures repository changes, writes thin packs and diffs, and returns the commit output with three artifacts: 1. Thin pack artifact (like Persist) 2. Diff from parent hash artifact 3. Diff from base hash artifact

func (*Controller) Restore

func (c *Controller) Restore(ctx context.Context, task *GitTaskContext, thinPack jobdb.Artifact) error

Restore replays thin packs when the target persist hash differs from the workspace state. It also prepares the workspace if it doesn't yet have a local copy of the repo.

type FileAdapter

type FileAdapter struct{}

FileAdapter implements StorageAdapter for file:// URIs.

func (FileAdapter) EnsureLocation

func (FileAdapter) EnsureLocation(_ context.Context, baseURI string) (string, error)

EnsureLocation ensures the base directory exists and returns its local filesystem path.

func (FileAdapter) ListBlobs

func (FileAdapter) ListBlobs(_ context.Context, baseURI, prefix string) ([]string, error)

ListBlobs lists blobs beneath the base URI using the supplied prefix relative to the base path.

func (FileAdapter) PutBlob

func (FileAdapter) PutBlob(_ context.Context, baseURI, relativePath, sourcePath string) (string, error)

PutBlob for the file adapter moves/copies the blob into the target location and returns the relative path.

func (FileAdapter) ResolvePath

func (FileAdapter) ResolvePath(_ context.Context, baseURI, relativePath string) (string, error)

ResolvePath returns the absolute path for the provided relative blob path.

type GitTaskContext

type GitTaskContext struct {
	*GlobalGitTaskContext        // Pointer embedding - shares data with global context
	WorktreePath          string `json:"worktree_path,omitempty"`
}

GitTaskContext is used internally by workspace_controller Uses POINTER embedding to share the global context

func NewGitTaskContext

func NewGitTaskContext(tec contextual.TaskExecutionContext) *GitTaskContext

NewGitTaskContext creates a GitTaskContext from TaskExecutionContext

func (*GitTaskContext) GetBaseRef

func (c *GitTaskContext) GetBaseRef() string

func (*GitTaskContext) GetBaseRepo

func (c *GitTaskContext) GetBaseRepo() string

Keep ALL existing getter methods - controller and other code depends on them

func (*GitTaskContext) GetCellName

func (c *GitTaskContext) GetCellName() string

func (*GitTaskContext) GetGitAuthor

func (c *GitTaskContext) GetGitAuthor() string

func (*GitTaskContext) GetInvokeHash

func (c *GitTaskContext) GetInvokeHash() string

func (*GitTaskContext) GetInvokeSeq

func (c *GitTaskContext) GetInvokeSeq() int64

func (*GitTaskContext) GetNodePath

func (c *GitTaskContext) GetNodePath() string

func (*GitTaskContext) GetParentHash

func (c *GitTaskContext) GetParentHash() string

func (*GitTaskContext) GetPersistHash

func (c *GitTaskContext) GetPersistHash() string

func (*GitTaskContext) GetRecipeSourceRef

func (c *GitTaskContext) GetRecipeSourceRef() string

func (*GitTaskContext) GetRecipeSourceRepo

func (c *GitTaskContext) GetRecipeSourceRepo() string

func (*GitTaskContext) GetResolvedBaseHash

func (c *GitTaskContext) GetResolvedBaseHash() string

func (*GitTaskContext) GetWorktreePath

func (c *GitTaskContext) GetWorktreePath() string

type GlobalGitTaskContext

type GlobalGitTaskContext struct {
	Workspace        *contextual.WorkspaceContext     `json:"workspace,omitempty"`
	CellResolution   *cellref.Context                 `json:"cell_resolution,omitempty"`
	BaseRepo         string                           `json:"base_repo,omitempty"`
	BaseRef          string                           `json:"base_ref,omitempty"`
	ResolvedBaseHash string                           `json:"resolved_base_hash,omitempty"`
	RecipeSourceRepo string                           `json:"recipe_source_repo,omitempty"`
	RecipeSourceRef  string                           `json:"recipe_source_ref,omitempty"`
	PersistHash      string                           `json:"persist_hash,omitempty"`
	ParentRef        string                           `json:"parent_ref,omitempty"`
	ParentHash       string                           `json:"parent_hash,omitempty"`
	CellName         string                           `json:"cell_name,omitempty"`
	GitAuthor        string                           `json:"git_author,omitempty"`
	NodePath         string                           `json:"node_path,omitempty"`
	InvokeSeq        int64                            `json:"invoke_seq"`
	InvokeHash       string                           `json:"invoke_hash,omitempty"`
	InlineStack      []contextual.InlineBoundaryFrame `json:"inline_stack,omitempty"`
}

GlobalGitTaskContext contains machine-independent git context (serializable) This can be safely serialized and sent between machines

func NewGlobalGitTaskContext

func NewGlobalGitTaskContext(tec contextual.TaskExecutionContext) *GlobalGitTaskContext

NewGlobalGitTaskContext creates a GlobalGitTaskContext from TaskExecutionContext

func (*GlobalGitTaskContext) GetWorkspaceCellName added in v0.0.54

func (c *GlobalGitTaskContext) GetWorkspaceCellName() string

type StorageAdapter

type StorageAdapter interface {
	EnsureLocation(ctx context.Context, baseURI string) (string, error)
	PutBlob(ctx context.Context, baseURI, relativePath, sourcePath string) (string, error)
	ResolvePath(ctx context.Context, baseURI, relativePath string) (string, error)
	ListBlobs(ctx context.Context, baseURI, prefix string) ([]string, error)
}

StorageAdapter provides filesystem-agnostic primitives for thin-pack management.

Jump to

Keyboard shortcuts

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