Documentation
¶
Index ¶
- Constants
- Variables
- func Clone(ctx context.Context, path string, t Transport, opts CloneOpts) (*Repo, *CloneResult, error)
- func JulianToTime(j float64) time.Time
- func TimeToJulian(t time.Time) float64
- type AnnotateOpts
- type AnnotatedLine
- type BisectSession
- type BuggifyChecker
- type Checkout
- func (c *Checkout) Add(patterns []string) (int, error)
- func (c *Checkout) Checkin(opts CheckoutCommitOpts) (int64, string, error)
- func (c *Checkout) Close() error
- func (c *Checkout) Dir() string
- func (c *Checkout) Extract(rid int64, opts ExtractOpts) error
- func (c *Checkout) HasChanges() (bool, error)
- func (c *Checkout) Remove(patterns []string) error
- func (c *Checkout) Rename(oldName, newName string) error
- func (c *Checkout) Revert(opts RevertOpts) error
- func (c *Checkout) Status() ([]CheckoutChange, error)
- func (c *Checkout) Update(opts UpdateOpts) error
- func (c *Checkout) Version() (int64, string, error)
- func (c *Checkout) WouldFork() (bool, error)
- type CheckoutChange
- type CheckoutCommitOpts
- type CheckoutCreateOpts
- type CheckoutObserver
- type CheckoutOpenOpts
- type CheckoutOpts
- type CheckpointMode
- type CloneOpts
- type CloneResult
- type CommitEnd
- type CommitOpts
- type CommitStart
- type CreateOpts
- type DiffEntry
- type ExtractEnd
- type ExtractOpts
- type ExtractStart
- type FileEntry
- type FileToCommit
- type Fork
- type FslError
- type FslID
- type FslSize
- type HTTPOption
- type HandleEnd
- type HandleOpts
- type HandleStart
- type LogEntry
- type LogOpts
- type MergeConflict
- type MergeConflictError
- type MergeOpts
- type MergeResult
- type MockTransport
- type PullOpts
- type RC
- type Repo
- func (r *Repo) Annotate(opts AnnotateOpts) ([]AnnotatedLine, error)
- func (r *Repo) BranchTip(name string) (int64, error)
- func (r *Repo) Checkpoint(mode CheckpointMode) error
- func (r *Repo) Close() error
- func (r *Repo) Commit(opts CommitOpts) (int64, string, error)
- func (r *Repo) Config(key string) (string, error)
- func (r *Repo) CreateCheckout(dir string, opts CheckoutCreateOpts) (*Checkout, error)
- func (r *Repo) CreateUser(opts UserOpts) error
- func (r *Repo) DB() *db.DB
- func (r *Repo) DeleteUser(login string) error
- func (r *Repo) DetectForks() ([]Fork, error)
- func (r *Repo) Diff(ridA, ridB int64, filePath string) ([]DiffEntry, error)
- func (r *Repo) FindCommonAncestor(ridA, ridB int64) (int64, error)
- func (r *Repo) GetUser(login string) (User, error)
- func (r *Repo) HandleSync(ctx context.Context, payload []byte) ([]byte, error)
- func (r *Repo) HandleSyncWithOpts(ctx context.Context, payload []byte, opts HandleOpts) ([]byte, error)
- func (r *Repo) Inner() *repo.Repo
- func (r *Repo) ListConflictForks() ([]string, error)
- func (r *Repo) ListFiles(rid int64) ([]FileEntry, error)
- func (r *Repo) ListUsers() ([]User, error)
- func (r *Repo) Merge(srcBranch, dstBranch, message, user string) (int64, string, error)
- func (r *Repo) OpenCheckout(dir string, opts CheckoutOpenOpts) (*Checkout, error)
- func (r *Repo) Path() string
- func (r *Repo) Pull(ctx context.Context, url string, opts PullOpts) (*SyncResult, error)
- func (r *Repo) ReadFile(rid int64, filePath string) ([]byte, error)
- func (r *Repo) ReadFileAt(version string, filePath string) ([]byte, error)
- func (r *Repo) Redo(dir string) error
- func (r *Repo) ResolveConflictFork(filename string) error
- func (r *Repo) ResolveVersion(name string) (int64, error)
- func (r *Repo) ServeHTTP(ctx context.Context, addr string) error
- func (r *Repo) SetCaps(login, caps string) error
- func (r *Repo) SetConfig(key, value string) error
- func (r *Repo) SetPassword(login, password string) error
- func (r *Repo) StashApply(dir string, id int64) error
- func (r *Repo) StashClear() error
- func (r *Repo) StashDrop(id int64) error
- func (r *Repo) StashList() ([]StashEntry, error)
- func (r *Repo) StashPop(dir string) error
- func (r *Repo) StashSave(dir, comment string) error
- func (r *Repo) Sync(ctx context.Context, t Transport, opts SyncOpts) (*SyncResult, error)
- func (r *Repo) Tag(opts TagOpts) (int64, error)
- func (r *Repo) Timeline(opts LogOpts) ([]LogEntry, error)
- func (r *Repo) UUIDFromRID(rid int64) (string, error)
- func (r *Repo) UVDelete(name string, mtime time.Time) error
- func (r *Repo) UVList() ([]UVEntry, error)
- func (r *Repo) UVRead(name string) ([]byte, int64, string, error)
- func (r *Repo) UVWrite(name string, content []byte, mtime time.Time) error
- func (r *Repo) Undo(dir string) error
- func (r *Repo) Verify() error
- func (r *Repo) WithTx(fn func(tx *db.Tx) error) error
- func (r *Repo) XferHandler() http.HandlerFunc
- type RevertOpts
- type RoundStats
- type ScanEnd
- type SessionEnd
- type SessionStart
- type StashEntry
- type StatusEntry
- type StatusOpts
- type SyncObserver
- type SyncOpts
- type SyncResult
- type TableSyncEnd
- type TableSyncStart
- type TagOpts
- type TagSpec
- type Transport
- type TransportFunc
- type UVEntry
- type UpdateChange
- type UpdateOpts
- type User
- type UserOpts
Constants ¶
const ( CheckpointPassive = db.CheckpointPassive CheckpointFull = db.CheckpointFull CheckpointRestart = db.CheckpointRestart CheckpointTruncate = db.CheckpointTruncate )
const ( PhantomSize FslSize = fsltype.PhantomSize FossilApplicationID int32 = fsltype.FossilApplicationID )
Variables ¶
var ErrAmbiguousVersion = errors.New("libfossil: ambiguous version prefix")
ErrAmbiguousVersion is returned by ResolveVersion when a UUID prefix matches more than one artifact (collision). Callers can match with errors.Is.
var ErrArtifactNotFound = errors.New("libfossil: artifact not found")
ErrArtifactNotFound is returned by UUIDFromRID when the given RID does not correspond to any artifact in the repository's blob table. Callers can match with errors.Is.
var ErrFileNotFound = errors.New("libfossil: file not found in checkin")
ErrFileNotFound is returned by ReadFile when the requested filePath is not tracked in the given checkin. Callers can match with errors.Is.
var ErrMergeConflict = errors.New("libfossil: merge has conflicts")
ErrMergeConflict is returned (wrapped in a MergeConflictError) when Merge detects any unresolved three-way conflicts. Callers can check with errors.Is(err, ErrMergeConflict) without caring about the file list.
var ErrVersionNotFound = errors.New("libfossil: version not found")
ErrVersionNotFound is returned by ResolveVersion when the requested version string does not match any artifact in the repository. Callers can match with errors.Is.
Functions ¶
func Clone ¶
func Clone(ctx context.Context, path string, t Transport, opts CloneOpts) (*Repo, *CloneResult, error)
Clone performs a full repository clone from a remote Fossil server. It creates a new repository at the given path, runs the clone protocol until convergence, and returns the opened Repo handle and a result summary. On error, the partially-created repo file is removed.
func JulianToTime ¶
JulianToTime converts a Fossil Julian day number to time.Time.
func TimeToJulian ¶
TimeToJulian converts a time.Time to a Fossil Julian day number.
Types ¶
type AnnotateOpts ¶
AnnotateOpts configures an annotate operation.
type AnnotatedLine ¶
AnnotatedLine is a single line of blame/annotate output.
type BisectSession ¶
type BisectSession struct {
// contains filtered or unexported fields
}
BisectSession holds state for a binary-search bisect operation.
type BuggifyChecker ¶
BuggifyChecker controls fault injection for deterministic simulation testing.
type Checkout ¶
type Checkout struct {
// contains filtered or unexported fields
}
Checkout represents a working directory linked to a Fossil repository. A Checkout is not safe for concurrent use. Callers must serialize access to a single Checkout instance.
func (*Checkout) Add ¶
Add adds files to version tracking. Returns the number of files added. Files already tracked are silently skipped.
func (*Checkout) Checkin ¶
func (c *Checkout) Checkin(opts CheckoutCommitOpts) (int64, string, error)
Checkin creates a new checkin from the checkout working directory. Returns the RID and UUID of the new checkin manifest.
func (*Checkout) Extract ¶
func (c *Checkout) Extract(rid int64, opts ExtractOpts) error
Extract writes files from the specified checkin to the working directory.
func (*Checkout) HasChanges ¶
HasChanges returns true if the checkout has any modified, deleted, or renamed files. This is a DB-only check; call Extract or scan first to detect on-disk modifications.
func (*Checkout) Remove ¶
Remove removes files from version tracking. Newly added files are deleted from vfile; committed files are marked as deleted.
func (*Checkout) Revert ¶
func (c *Checkout) Revert(opts RevertOpts) error
Revert restores files to their checkout version state. If opts.Files is empty, reverts all changed files.
func (*Checkout) Status ¶
func (c *Checkout) Status() ([]CheckoutChange, error)
Status scans the working directory for changes and returns a list of changed files. Wraps ScanChanges + VisitChanges.
func (*Checkout) Update ¶
func (c *Checkout) Update(opts UpdateOpts) error
Update updates the checkout to a new version, performing 3-way merge where needed to preserve local modifications.
type CheckoutChange ¶
type CheckoutChange struct {
Name string
Change string // "added", "modified", "deleted", "renamed", "missing"
}
CheckoutChange describes a single file change in the checkout.
type CheckoutCommitOpts ¶
type CheckoutCommitOpts struct {
Message string
User string
Branch string // empty = current branch
Tags []string // additional tag names
Delta bool
}
CommitOpts configures creating a checkin from the checkout. (This type is distinct from the existing libfossil.CommitOpts which takes explicit file content for direct repo commits without a checkout.)
type CheckoutCreateOpts ¶
type CheckoutCreateOpts struct {
Env *simio.Env // nil = real env
Observer CheckoutObserver // nil = nop
}
CheckoutCreateOpts configures creating a new checkout.
type CheckoutObserver ¶
type CheckoutObserver interface {
ExtractStarted(info ExtractStart)
ExtractFileCompleted(name string, change UpdateChange)
ExtractCompleted(info ExtractEnd)
ScanStarted(dir string)
ScanCompleted(info ScanEnd)
CommitStarted(info CommitStart)
CommitCompleted(info CommitEnd)
Error(err error)
}
CheckoutObserver receives lifecycle callbacks during checkout/commit operations. Use NopCheckoutObserver() for a silent no-op, or StdoutCheckoutObserver() for stderr logging.
func NopCheckoutObserver ¶
func NopCheckoutObserver() CheckoutObserver
NopCheckoutObserver returns a CheckoutObserver that silently discards all events.
func StdoutCheckoutObserver ¶
func StdoutCheckoutObserver() CheckoutObserver
StdoutCheckoutObserver returns a CheckoutObserver that logs events to stderr.
type CheckoutOpenOpts ¶
type CheckoutOpenOpts struct {
SearchParents bool // search parent dirs for .fslckout
Env *simio.Env // nil = real env
Observer CheckoutObserver
}
CheckoutOpenOpts configures opening an existing checkout.
type CheckoutOpts ¶
CheckoutOpts configures a checkout extraction.
type CheckpointMode ¶ added in v0.6.0
type CheckpointMode = db.CheckpointMode
CheckpointMode mirrors SQLite's PRAGMA wal_checkpoint(<mode>) argument.
type CloneOpts ¶
type CloneOpts struct {
User string
Password string
ProjectCode string
ServerCode string
Observer SyncObserver
Buggify BuggifyChecker // fault injection for DST (nil = no faults)
}
CloneOpts configures a clone operation.
type CloneResult ¶
type CloneResult struct {
Rounds int
BlobsRecvd int
ArtifactsLinked int
ProjectCode string
ServerCode string
Messages []string
}
CloneResult reports what happened during a clone.
type CommitOpts ¶
type CommitOpts struct {
// Files is the caller-supplied subset of the new commit's tree. When
// ParentID is non-zero, Files is MERGED with the parent's tracked files:
// any name in Files overrides the parent's entry, and any file tracked
// at the parent but not in Files is carried forward into the new manifest.
// This matches `fossil ci`'s full-tree semantics — supplying just the
// changed files does not erase the rest of the tree.
Files []FileToCommit
Comment string
User string
Tags []TagSpec
Time time.Time
ParentID int64
// MergeParents lists additional parents for a merge commit. The resulting
// manifest's P-card is [ParentID, MergeParents...]; ParentID is the primary
// parent (branch tip being committed onto), and each MergeParent contributes
// a secondary plink row (isprim=0).
MergeParents []int64
Delta bool
// PartialManifest, when true, skips the parent-file merge: the resulting
// manifest contains only Files. This is the legacy pre-fix behavior and
// effectively erases every file tracked at the parent that is not in
// Files. Default false matches `fossil ci`. Set true only when the
// caller intentionally wants omission-to-mean-deletion (e.g., tests for
// the diff/deletion path); a dedicated deletion API may replace this
// escape hatch later.
PartialManifest bool
}
CommitOpts configures a commit operation.
type CommitStart ¶
CommitStart describes the beginning of a commit operation.
type CreateOpts ¶
type CreateOpts struct {
User string
// ProjectCode optionally sets the repo's project-code. Empty
// generates a fresh one (current behavior). When non-empty, must
// be 40-char lowercase hex (^[0-9a-f]{40}$) — matching the format
// of generated project-codes. Invalid values return an error
// before any file is written.
ProjectCode string
// Rand provides random bytes for project-code and server-code generation.
// Nil defaults to crypto/rand (production). Set to simio.NewSeededRand
// for deterministic simulation testing.
Rand simio.Rand
}
CreateOpts configures repository creation.
type ExtractEnd ¶
type ExtractEnd struct {
FilesWritten int
}
ExtractEnd describes the completion of a checkout extraction.
type ExtractOpts ¶
type ExtractOpts struct {
Force bool // overwrite uncommitted changes
}
ExtractOpts configures file extraction from a checkin.
type ExtractStart ¶
ExtractStart describes the beginning of a checkout extraction.
type FileToCommit ¶
FileToCommit describes a file to include in a commit.
type HTTPOption ¶
type HTTPOption func(*httpTransport)
HTTPOption configures an HTTP transport.
func WithHTTPClient ¶
func WithHTTPClient(c *http.Client) HTTPOption
WithHTTPClient sets a custom http.Client for the transport.
type HandleEnd ¶
type HandleEnd struct {
FilesSent, FilesRecvd int
}
HandleEnd describes the completion of a server-side sync handle.
type HandleOpts ¶
type HandleOpts struct {
Observer SyncObserver
Buggify BuggifyChecker
}
HandleOpts configures server-side sync handling.
type HandleStart ¶
type HandleStart struct {
RemoteAddr string
}
HandleStart describes the beginning of a server-side sync handle.
type LogEntry ¶
type LogEntry struct {
RID int64
UUID string
Comment string
User string
Time time.Time
Parents []string
}
LogEntry represents a single checkin in the timeline.
type MergeConflict ¶
MergeConflict describes a conflict region in a file.
type MergeConflictError ¶ added in v0.2.0
type MergeConflictError struct {
Files []string
}
MergeConflictError reports which files had unresolved merge conflicts. Files is sorted alphabetically for deterministic output.
func (*MergeConflictError) Error ¶ added in v0.2.0
func (e *MergeConflictError) Error() string
func (*MergeConflictError) Is ¶ added in v0.2.0
func (e *MergeConflictError) Is(target error) bool
type MergeResult ¶
type MergeResult struct {
Clean bool
Conflicts []MergeConflict
}
MergeResult describes the outcome of a merge.
type MockTransport ¶
MockTransport is a test double that delegates to a handler function.
type PullOpts ¶ added in v0.4.0
type PullOpts struct {
// ProjectCode optionally pins the expected server project code. Empty
// accepts whatever the peer advertises (matches existing Sync semantics).
ProjectCode string
// MaxSend caps the bytes the client will send per round (mostly clones
// of clients with UV files). Zero leaves the existing default in place.
MaxSend int
// Observer receives sync-progress events. nil disables observation.
Observer SyncObserver
}
PullOpts configures a pull-only sync. Fields are a subset of SyncOpts; Pull is hard-coded true and Push is hard-coded false to keep the API surface honest about what Pull does.
type RC ¶
type RC int
const ( RCOK RC = 0 RCError RC = 100 RCNYI RC = 101 RCOOM RC = 102 RCMisuse RC = 103 RCRange RC = 104 RCAccess RC = 105 RCIO RC = 106 RCNotFound RC = 107 RCAlreadyExists RC = 108 RCConsistency RC = 109 RCRepoNeedsRebuild RC = 110 RCNotARepo RC = 111 RCRepoVersion RC = 112 RCDB RC = 113 RCBreak RC = 114 RCStepRow RC = 115 RCStepDone RC = 116 RCStepError RC = 117 RCType RC = 118 RCNotACkout RC = 119 RCRepoMismatch RC = 120 RCChecksumMismatch RC = 121 RCLocked RC = 122 RCConflict RC = 123 RCSizeMismatch RC = 124 RCPhantom RC = 125 RCUnsupported RC = 126 )
type Repo ¶
type Repo struct {
// contains filtered or unexported fields
}
Repo is an opaque handle to a Fossil repository.
func Create ¶
func Create(path string, opts CreateOpts) (*Repo, error)
Create creates a new Fossil repository at the given path.
func (*Repo) Annotate ¶
func (r *Repo) Annotate(opts AnnotateOpts) ([]AnnotatedLine, error)
Annotate attributes each line of a file to the commit that last changed it.
func (*Repo) BranchTip ¶ added in v0.2.0
BranchTip returns the RID of the most recent checkin on the named branch. Resolves via the 'branch' propagating tag: the tip is the checkin with the latest event.mtime whose tagxref still has that branch value active. Returns an error if no such branch exists in the repository.
func (*Repo) Checkpoint ¶ added in v0.6.0
func (r *Repo) Checkpoint(mode CheckpointMode) error
Checkpoint runs PRAGMA wal_checkpoint(<mode>) against the repository. Safe to call on a live repo. CheckpointPassive is non-blocking and appropriate for periodic background checkpoints. CheckpointTruncate produces a maximally compact on-disk file readable by external fossil tooling without a subsequent Close.
func (*Repo) Close ¶
Close closes the repository and releases resources. As part of close, a WAL TRUNCATE checkpoint is run so the on-disk repo file is readable by external fossil/SQLite tooling.
func (*Repo) Commit ¶
func (r *Repo) Commit(opts CommitOpts) (int64, string, error)
Commit creates a new checkin manifest with the given files and returns the RID (row ID) and UUID of the newly created artifact. When ParentID is non-zero, files tracked at the parent but absent from opts.Files are carried forward into the new manifest (full-tree semantics — see the CommitOpts.Files doc).
func (*Repo) CreateCheckout ¶
func (r *Repo) CreateCheckout(dir string, opts CheckoutCreateOpts) (*Checkout, error)
CreateCheckout creates a new checkout directory linked to this repository. The directory is created if it does not exist. The checkout is initialized to the tip checkin.
func (*Repo) CreateUser ¶
CreateUser creates a new user in the repository.
func (*Repo) DB ¶
DB returns the underlying database handle for raw SQL queries. Use this when the high-level Repo methods don't cover your use case.
func (*Repo) DeleteUser ¶
DeleteUser removes a user from the repository.
func (*Repo) DetectForks ¶
DetectForks finds divergent branches in the repository.
func (*Repo) Diff ¶
Diff returns the unified diff(s) between ridA and ridB.
When filePath is non-empty, returns 0 or 1 entries for that single file: the file is treated as empty bytes on any side where it is absent, so additions and deletions render as pure insert/delete hunks. An empty slice is returned when both sides are byte-identical.
When filePath is empty, returns one entry per file that changed between the two checkins (the union of files across both sides where the content UUID differs or the file exists on only one side). Entries are sorted by Name for deterministic ordering. An empty slice is returned when the two checkins have identical file sets and content.
Whole-checkin enumeration is currently name-keyed: a rename with no content change surfaces as a delete of the old name plus an add of the new name, and permission-only changes are not reflected. Proper rename and perm-change detection (via the underlying mlink table) is tracked as a follow-up; per-file diff behaviour for an explicitly named file is unchanged.
func (*Repo) FindCommonAncestor ¶
FindCommonAncestor finds the nearest common ancestor of two checkins.
func (*Repo) HandleSync ¶
HandleSync processes an incoming xfer request (server-side). The payload is a raw xfer-encoded byte slice; the response is also raw bytes.
func (*Repo) HandleSyncWithOpts ¶
func (r *Repo) HandleSyncWithOpts(ctx context.Context, payload []byte, opts HandleOpts) ([]byte, error)
HandleSyncWithOpts processes an incoming xfer request with optional configuration.
func (*Repo) Inner ¶
Inner returns the underlying internal repo handle. This is exported for use by in-module packages (e.g., cli/) that need direct access to the repo DB for raw SQL or internal package calls.
func (*Repo) ListConflictForks ¶
ListConflictForks returns filenames with unresolved conflict-fork entries.
func (*Repo) Merge ¶ added in v0.2.0
Merge performs a three-way merge of srcBranch into dstBranch and creates a merge commit whose primary parent is dstBranch's tip and whose secondary parent is srcBranch's tip. Returns (rid, uuid) of the new commit on success.
Conflict policy: any unresolved conflict in any file aborts the whole operation with a *MergeConflictError — no commit is written. Callers should check errors.Is(err, ErrMergeConflict) to detect this case.
File handling:
- Present on both sides: three-way merge against the common ancestor.
- Present on only one side (new file): kept as-is.
- In ancestor, missing on one side, unchanged on the other: agreed deletion.
- In ancestor, missing on one side, modified on the other: modify/delete conflict.
func (*Repo) OpenCheckout ¶
func (r *Repo) OpenCheckout(dir string, opts CheckoutOpenOpts) (*Checkout, error)
OpenCheckout opens an existing checkout directory linked to this repository.
func (*Repo) Pull ¶ added in v0.4.0
Pull fetches commits and ancillary objects from a Fossil HTTP peer and applies them to this repo. It is a strict pull — nothing is sent.
Tiger Style: hostile inputs panic via assert at the boundary; transport failures return wrapped errors. Idempotent on a repo already at peer's tip (returns a SyncResult with Rounds=0–1 and FilesRecvd=0).
func (*Repo) ReadFile ¶ added in v0.3.0
ReadFile returns the bytes of filePath as they existed in checkin rid. Returns ErrFileNotFound (wrapped) if the file is not tracked in that checkin. A file that exists but is empty returns ([]byte{}, nil).
func (*Repo) ReadFileAt ¶ added in v0.4.3
ReadFileAt reads filePath from the checkin identified by a symbolic version name (e.g. "tip", "trunk", a branch name, a UUID, or a UUID prefix). It calls ResolveVersion to obtain the RID, then delegates to ReadFile. Use ReadFile directly when you already have a numeric RID.
func (*Repo) Redo ¶
Redo re-applies the last undone operation. Requires a checkout database; not yet wired.
func (*Repo) ResolveConflictFork ¶
ResolveConflictFork marks a conflict-fork entry as resolved.
func (*Repo) ResolveVersion ¶ added in v0.4.3
ResolveVersion resolves a symbolic version name to a repository artifact RID.
Resolution order:
- "" or "tip" — newest checkin by mtime from the event table.
- "trunk" — tip of the trunk branch via tagxref/tag; falls back to "tip" if the repository has no trunk tag.
- Named branch — tag lookup for "sym-<name>" in tagxref/tag (e.g. "feature-x" resolves via sym-feature-x).
- Full UUID (≥40 chars) — exact match against blob.uuid.
- UUID prefix (4–39 chars) — unique-prefix match; returns ErrAmbiguousVersion if more than one artifact matches.
An empty result or no match returns ErrVersionNotFound (wrapped). An ambiguous prefix returns ErrAmbiguousVersion (wrapped).
func (*Repo) ServeHTTP ¶
ServeHTTP starts an HTTP server that accepts Fossil xfer requests. Blocks until ctx is cancelled.
func (*Repo) SetPassword ¶
SetPassword updates a user's password.
func (*Repo) StashApply ¶
StashApply restores a stash entry by ID without removing it.
func (*Repo) StashList ¶
func (r *Repo) StashList() ([]StashEntry, error)
StashList returns all stash entries.
func (*Repo) StashSave ¶
StashSave saves working-tree changes to the stash. Requires a checkout database; not yet wired (Repo only wraps the repo DB).
func (*Repo) Tag ¶
Tag creates a control artifact that adds a tag to a target checkin. Returns the UUID of the tag control artifact.
func (*Repo) UUIDFromRID ¶ added in v0.5.0
UUIDFromRID returns the UUID (manifest hash) of the artifact identified by rid. The UUID is the stable, content-addressed identifier for the artifact; the rid is a repository-local integer that may differ across clones.
Returns ErrArtifactNotFound (wrapped) if no artifact with the given rid exists in the repository. The wrapped error message includes the offending rid. Other errors surface as-is.
func (*Repo) UVRead ¶
UVRead reads an unversioned file from the repository. Returns the content, mtime (unix seconds), and content hash.
func (*Repo) Undo ¶
Undo reverts the last commit or merge. Requires a checkout database; not yet wired.
func (*Repo) XferHandler ¶
func (r *Repo) XferHandler() http.HandlerFunc
XferHandler returns an http.HandlerFunc that decodes Fossil xfer requests, dispatches to HandleSync, and encodes the response. Use this to compose a custom mux alongside operational endpoints (e.g., /healthz).
type RevertOpts ¶
type RevertOpts struct {
Files []string // empty = revert all
}
RevertOpts configures reverting file changes.
type RoundStats ¶
type RoundStats struct {
FilesSent, FilesRecvd, BytesSent, BytesRecvd, Gimmes, IGots int
}
RoundStats describes the outcome of a single sync round.
type ScanEnd ¶
type ScanEnd struct {
FilesScanned int
}
ScanEnd describes the completion of a working-tree scan.
type SessionEnd ¶
type SessionEnd struct {
Rounds, FilesSent, FilesRecvd int
}
SessionEnd describes the completion of a sync session.
type SessionStart ¶
SessionStart describes the beginning of a sync session.
type StashEntry ¶
StashEntry describes a saved stash.
type StatusEntry ¶
StatusEntry describes a changed file in the working tree.
type StatusOpts ¶
type StatusOpts struct {
Dir string
}
StatusOpts configures a working-tree status query.
type SyncObserver ¶
type SyncObserver interface {
Started(info SessionStart)
RoundStarted(round int)
RoundCompleted(round int, stats RoundStats)
Completed(info SessionEnd)
Error(err error)
HandleStarted(info HandleStart)
HandleCompleted(info HandleEnd)
TableSyncStarted(info TableSyncStart)
TableSyncCompleted(info TableSyncEnd)
}
SyncObserver receives lifecycle callbacks during sync operations. Use NopSyncObserver() for a silent no-op, or StdoutSyncObserver() for stderr logging.
func NopSyncObserver ¶
func NopSyncObserver() SyncObserver
NopSyncObserver returns a SyncObserver that silently discards all events.
func StdoutSyncObserver ¶
func StdoutSyncObserver() SyncObserver
StdoutSyncObserver returns a SyncObserver that logs events to stderr.
type SyncOpts ¶
type SyncOpts struct {
Push bool
Pull bool
UV bool
ProjectCode string
ServerCode string
User string
Password string
PeerID string // identifies this leaf agent instance
MaxSend int
XTableSync bool // enable extension table sync (peer_registry, etc.)
Private bool // enable private artifact sync
Observer SyncObserver
Buggify BuggifyChecker
}
SyncOpts configures a sync operation.
type SyncResult ¶
type SyncResult struct {
Rounds int
FilesSent int
FilesRecvd int
UVFilesSent int
UVFilesRecvd int
UVGimmesSent int
BytesSent int64
BytesRecvd int64
Errors []string
}
SyncResult describes the outcome of a sync session.
type TableSyncEnd ¶
TableSyncEnd describes the completion of a config table sync.
type TableSyncStart ¶
type TableSyncStart struct {
Table string
}
TableSyncStart describes the beginning of a config table sync.
type Transport ¶
Transport delivers sync payloads between peers. Implementations handle the network layer (HTTP, NATS, etc.). Payloads are opaque zlib-compressed xfer card streams.
func NewHTTPTransport ¶
func NewHTTPTransport(url string, opts ...HTTPOption) Transport
NewHTTPTransport creates a Transport that speaks Fossil's HTTP /xfer protocol.
type TransportFunc ¶
TransportFunc adapts a plain function to the Transport interface. This is the Transport equivalent of http.HandlerFunc.
type UpdateChange ¶
type UpdateChange string
UpdateChange classifies how a file changed.
const ( ChangeAdded UpdateChange = "added" ChangeModified UpdateChange = "modified" ChangeDeleted UpdateChange = "deleted" )
type UpdateOpts ¶
UpdateOpts configures updating to a new version with merge.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
libfossil
command
|
|
|
Package db provides a SQLite database layer with pluggable drivers.
|
Package db provides a SQLite database layer with pluggable drivers. |
|
driver/modernc
module
|
|
|
driver/ncruces
module
|
|
|
examples
|
|
|
embed-repo-api
command
Example: embed libfossil as a library in a Go application.
|
Example: embed libfossil as a library in a Go application. |
|
wasm
command
Example: build libfossil for a generic WASI Preview 1 wasm target.
|
Example: build libfossil for a generic WASI Preview 1 wasm target. |
|
internal
|
|
|
bisect
Package bisect implements binary search through Fossil commit history.
|
Package bisect implements binary search through Fossil commit history. |
|
blob
Package blob handles content-addressed blob storage in Fossil repository databases.
|
Package blob handles content-addressed blob storage in Fossil repository databases. |
|
checkout
Package checkout provides working directory management for Fossil repositories.
|
Package checkout provides working directory management for Fossil repositories. |
|
content
Package content reconstructs full artifact content from Fossil's delta-chain storage.
|
Package content reconstructs full artifact content from Fossil's delta-chain storage. |
|
diff
Package diff produces unified diff output from two byte slices using the Myers diff algorithm.
|
Package diff produces unified diff output from two byte slices using the Myers diff algorithm. |
|
fsltype
Package fsltype defines shared types used across internal packages.
|
Package fsltype defines shared types used across internal packages. |
|
merge
Package merge provides three-way merge with pluggable strategies.
|
Package merge provides three-way merge with pluggable strategies. |
|
repo
Package repo manages Fossil repository database files.
|
Package repo manages Fossil repository database files. |
|
stash
Package stash saves and restores working directory changes, storing deltas against baseline blobs in the checkout database (.fslckout).
|
Package stash saves and restores working directory changes, storing deltas against baseline blobs in the checkout database (.fslckout). |
|
sync
Package sync implements Fossil's multi-round sync and clone protocol.
|
Package sync implements Fossil's multi-round sync and clone protocol. |
|
undo
Package undo saves, restores, and redoes checkout state in a Fossil .fslckout database.
|
Package undo saves, restores, and redoes checkout state in a Fossil .fslckout database. |
|
verify
Package verify provides comprehensive repository verification and rebuild.
|
Package verify provides comprehensive repository verification and rebuild. |
|
xfer
Package xfer implements Fossil's sync protocol card codec.
|
Package xfer implements Fossil's sync protocol card codec. |
|
observer
|
|
|
otel
module
|
|