blob: 4c89f96cd4b2c55ee9f1577845c0ec5bed9fd032 (
plain)
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
27
28
29
30
31
32
|
package repository
import (
"context"
"gitlab.com/gitlab-org/gitaly/v15/internal/gitaly/service"
"gitlab.com/gitlab-org/gitaly/v15/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb"
)
// ObjectFormat determines the object format of the Git repository.
func (s *server) ObjectFormat(ctx context.Context, request *gitalypb.ObjectFormatRequest) (*gitalypb.ObjectFormatResponse, error) {
if err := service.ValidateRepository(request.Repository); err != nil {
return nil, structerr.NewInvalidArgument("%w", err)
}
repo := s.localrepo(request.Repository)
// Check for the path up-front so that we detect missing repositories early on.
if _, err := repo.Path(); err != nil {
return nil, structerr.New("%w", err)
}
objectHash, err := repo.ObjectHash(ctx)
if err != nil {
return nil, structerr.New("detecting object hash: %w", err)
}
return &gitalypb.ObjectFormatResponse{
Format: objectHash.ProtoFormat,
}, nil
}
|