gitstate

package
v0.0.62 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 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"`
	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