aboutsummaryrefslogtreecommitdiff
path: root/receivepack/internal/service/quarantine.go
blob: 17ff62797935c594a6a15fdf47c255b6fc06f69a (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
}