diff options
| author | 2026-03-07 14:24:22 +0800 | |
|---|---|---|
| committer | 2026-03-07 17:17:14 +0800 | |
| commit | dc7ce00cbe3c300caac3c13b6701240126b99e00 (patch) | |
| tree | a00d516403fa7f7c5662937f7391e5d843b286d7 /receivepack/internal/service/quarantine.go | |
| parent | refstore/files: Add new files backend (diff) | |
| signature | No signature | |
receivepack: Add service semantics thingy
Diffstat (limited to 'receivepack/internal/service/quarantine.go')
| -rw-r--r-- | receivepack/internal/service/quarantine.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/receivepack/internal/service/quarantine.go b/receivepack/internal/service/quarantine.go new file mode 100644 index 00000000..17ff6279 --- /dev/null +++ b/receivepack/internal/service/quarantine.go @@ -0,0 +1,26 @@ +package service + +import ( + "crypto/rand" + "os" +) + +// createQuarantineRoot creates one per-push quarantine directory beneath the +// permanent objects root. +func (service *Service) createQuarantineRoot() (string, *os.Root, error) { + name := "tmp_objdir-incoming-" + rand.Text() + + err := service.opts.ObjectsRoot.Mkdir(name, 0o700) + if err != nil { + return "", nil, err + } + + root, err := service.opts.ObjectsRoot.OpenRoot(name) + if err != nil { + _ = service.opts.ObjectsRoot.RemoveAll(name) + + return "", nil, err + } + + return name, root, nil +} |
