ref: 3ce59c3248dec0eb0f918c42f37f53bc2ac20425
dir: /object/store/writer_pack.go/
package objectstore
import (
"io"
"codeberg.org/lindenii/furgit/common/iowrap"
)
// PackWriteOptions controls one pack write operation.
type PackWriteOptions struct {
// ThinBase supplies the wider object reader used to complete thin packs
// during ingestion.
//
// This is an option for the write operation rather than on a particular
// pack-backed store because any pack-accepting store is not generally
// expected to know the entire repository object universe around it.
// In a normal repository, thin bases usually come from a broader view
// such as mix(loose, packed), and should not be treated as a property of
// the destination pack-accepting store. Thus, in almost all pack-ingesting
// operations, a thin base reader would be required, and hence it is
// included here.
//
// When nil, external thin-base repair is disabled and unresolved thin deltas
// fail ingestion.
ThinBase Reader
// Progress receives human-readable progress messages.
//
// When nil, no progress output is emitted.
Progress iowrap.WriteFlusher
// RequireTrailingEOF requires the source to hit EOF after the pack trailer.
//
// This is suitable for exact pack-file readers, but should be disabled for
// full-duplex transport streams like receive-pack where the peer keeps the
// connection open to read the server response.
RequireTrailingEOF bool
}
// PackWriter writes Git pack streams.
type PackWriter interface {
// WritePack ingests one pack stream.
WritePack(src io.Reader, opts PackWriteOptions) error
}
// PackQuarantine represents one quarantined pack-wise write.
type PackQuarantine interface {
BaseQuarantine
PackWriter
}
// PackQuarantineOptions controls the options for one pack quarantine creation.
type PackQuarantineOptions struct{}
// PackQuarantiner creates quarantines for pack-wise writes.
type PackQuarantiner interface {
BeginPackQuarantine(opts PackQuarantineOptions) (PackQuarantine, error)
}