aboutsummaryrefslogtreecommitdiff
path: root/packfile/ingest/errors.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-10 14:07:54 +0800
committerGravatar Runxi Yu2026-03-10 14:07:54 +0800
commitc2cb06aa23a1769a0d84756acccf1ac1358f61ef (patch)
tree86d991b67542dd8e8509a74c832b749ccf948342 /packfile/ingest/errors.go
parentcommitgraph: Move out of format/ (diff)
signatureNo signature
*: format/pack -> packfile; format/delta -> delta; delete format
Diffstat (limited to 'packfile/ingest/errors.go')
-rw-r--r--packfile/ingest/errors.go77
1 files changed, 77 insertions, 0 deletions
diff --git a/packfile/ingest/errors.go b/packfile/ingest/errors.go
new file mode 100644
index 00000000..6292d790
--- /dev/null
+++ b/packfile/ingest/errors.go
@@ -0,0 +1,77 @@
+package ingest
+
+import (
+ "errors"
+ "fmt"
+)
+
+// InvalidPackHeaderError reports an invalid or unsupported pack header.
+type InvalidPackHeaderError struct {
+ Reason string
+}
+
+// Error implements error.
+func (err *InvalidPackHeaderError) Error() string {
+ return "packfile/ingest: invalid pack header: " + err.Reason
+}
+
+// PackTrailerMismatchError reports a mismatch between computed and trailer pack hash.
+type PackTrailerMismatchError struct{}
+
+// Error implements error.
+func (err *PackTrailerMismatchError) Error() string {
+ return "packfile/ingest: pack trailer hash mismatch"
+}
+
+// ThinPackUnresolvedError reports unresolved REF deltas when fixThin is disabled
+// or when required bases cannot be found in base.
+type ThinPackUnresolvedError struct {
+ Count int
+}
+
+// Error implements error.
+func (err *ThinPackUnresolvedError) Error() string {
+ return fmt.Sprintf("packfile/ingest: unresolved thin deltas: %d", err.Count)
+}
+
+// MalformedPackEntryError reports malformed entry encoding at one pack offset.
+type MalformedPackEntryError struct {
+ Offset uint64
+ Reason string
+}
+
+// Error implements error.
+func (err *MalformedPackEntryError) Error() string {
+ return fmt.Sprintf("packfile/ingest: malformed pack entry at offset %d: %s", err.Offset, err.Reason)
+}
+
+// DeltaCycleError reports a detected cycle in delta dependency resolution.
+type DeltaCycleError struct {
+ Offset uint64
+}
+
+// Error implements error.
+func (err *DeltaCycleError) Error() string {
+ return fmt.Sprintf("packfile/ingest: delta cycle detected at offset %d", err.Offset)
+}
+
+// DestinationWriteError reports destination I/O failures.
+type DestinationWriteError struct {
+ Op string
+}
+
+// Error implements error.
+func (err *DestinationWriteError) Error() string {
+ return "packfile/ingest: destination write failure: " + err.Op
+}
+
+var errExternalThinBase = errors.New("packfile/ingest: external thin base required")
+
+var (
+ // ErrAlreadyFinalized indicates Continue/Discard already called.
+ ErrAlreadyFinalized = errors.New("packfile/ingest: operation already finalized")
+ // ErrZeroObjectContinue indicates Continue was called for a zero-object pack.
+ ErrZeroObjectContinue = errors.New("packfile/ingest: cannot continue zero-object pack")
+ // ErrNonZeroDiscard indicates Discard was called for a non-zero-object pack.
+ ErrNonZeroDiscard = errors.New("packfile/ingest: cannot discard non-zero pack")
+)