···11package receivepack
2233import (
44- "os"
55-64 commitgraphread "codeberg.org/lindenii/furgit/format/commitgraph/read"
75 objectid "codeberg.org/lindenii/furgit/object/id"
86 objectstore "codeberg.org/lindenii/furgit/object/store"
···1412// ReceivePack borrows all configured dependencies.
1513//
1614// Refs and ExistingObjects are required and must be non-nil.
1717-// ObjectsRoot is required if the invocation may need to ingest or promote a
1515+// ObjectIngress is required if the invocation may need to ingest or quarantine a
1816// pack.
1917type Options struct {
2018 // GitProtocol is the raw Git protocol version string from the transport,
···3129 // ExistingObjects is the object store visible to the push before any newly
3230 // uploaded quarantined objects are promoted.
3331 ExistingObjects objectstore.Reader
3232+ // ObjectIngress creates coordinated quarantines for quarantined object and
3333+ // pack ingestion during the push.
3434+ ObjectIngress objectstore.Quarantiner
3435 // CommitGraph is an optional commit-graph snapshot corresponding to
3536 // ExistingObjects.
3637 CommitGraph *commitgraphread.Reader
3737- // ObjectsRoot is the permanent object storage root beneath which per-push
3838- // quarantine directories are derived.
3939- ObjectsRoot *os.Root
4040- // PromotedObjectPermissions, when non-nil, is applied to objects and
4141- // directories moved from quarantine into the permanent object store.
4242- PromotedObjectPermissions *PromotedObjectPermissions
4338 // Hook, when non-nil, runs after pack ingestion into quarantine and before
4439 // quarantine promotion or ref updates. Hook is borrowed for the duration of
4540 // ReceivePack.
···11package service
2233import (
44- "io/fs"
55- "os"
66-74 "codeberg.org/lindenii/furgit/common/iowrap"
85 commitgraphread "codeberg.org/lindenii/furgit/format/commitgraph/read"
96 objectid "codeberg.org/lindenii/furgit/object/id"
···118 refstore "codeberg.org/lindenii/furgit/ref/store"
129)
13101414-type PromotedObjectPermissions struct {
1515- DirMode fs.FileMode
1616- FileMode fs.FileMode
1717-}
1818-1911// Options configures one protocol-independent receive-pack service.
2012//
2113// Service borrows all configured dependencies.
2214//
2315// Refs and ExistingObjects are required and must be non-nil.
2424-// ObjectsRoot is required if Execute may need to ingest or promote a pack.
2525-// Progress, Hook, and HookIO are optional; when provided they are also
1616+// ObjectIngress is required if Execute may need to ingest or quarantine a
1717+// pack.
1818+// CommitGraph, Progress, Hook, and HookIO are optional; when provided they are also
2619// borrowed for the duration of Execute.
2720type Options struct {
2821 Algorithm objectid.Algorithm
···3124 refstore.TransactionalStore
3225 refstore.BatchStore
3326 }
3434- ExistingObjects objectstore.Reader
3535- CommitGraph *commitgraphread.Reader
3636- ObjectsRoot *os.Root
3737- Progress iowrap.WriteFlusher
3838- PromotedObjectPermissions *PromotedObjectPermissions
3939- Hook Hook
4040- HookIO HookIO
2727+ ExistingObjects objectstore.Reader
2828+ ObjectIngress objectstore.Quarantiner
2929+ CommitGraph *commitgraphread.Reader
3030+ Progress iowrap.WriteFlusher
3131+ Hook Hook
3232+ HookIO HookIO
4133}