Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSami Hiltunen <shiltunen@gitlab.com>2022-02-01 13:39:11 +0300
committerSami Hiltunen <shiltunen@gitlab.com>2022-02-01 18:57:26 +0300
commit3d7b0636d7448ea64beec5c768b7accd58f24835 (patch)
tree74d41bf20366b9b493c428a1e83d84fb125d2a7f
parent7779f09eb8bf76508b1393c697deb15711ed0721 (diff)
Move tree entry helpers out from commit service
Commit service's package contains helpers for working with tree entries. These helpers are used also in the repository service. This creates a cyclic dependency when repository service is setup in commit service's tests to create repositories via the API. This commit moves the tree entry helpers out of the commit package so the cyclic dependency is broken.
-rw-r--r--internal/git/catfile/tree_entries.go (renamed from internal/gitaly/service/commit/tree_entries_helper.go)27
-rw-r--r--internal/git/tree_entry.go (renamed from internal/gitaly/service/commit/util.go)5
-rw-r--r--internal/gitaly/service/blob/get_blobs.go3
-rw-r--r--internal/gitaly/service/commit/tree_entries.go10
-rw-r--r--internal/gitaly/service/commit/tree_entry.go2
-rw-r--r--internal/gitaly/service/repository/archive.go6
6 files changed, 28 insertions, 25 deletions
diff --git a/internal/gitaly/service/commit/tree_entries_helper.go b/internal/git/catfile/tree_entries.go
index afcf2403e..30996d662 100644
--- a/internal/gitaly/service/commit/tree_entries_helper.go
+++ b/internal/git/catfile/tree_entries.go
@@ -1,4 +1,4 @@
-package commit
+package catfile
import (
"bufio"
@@ -12,7 +12,6 @@ import (
"strings"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
- "gitlab.com/gitlab-org/gitaly/v14/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
)
@@ -20,13 +19,13 @@ type revisionPath struct{ revision, path string }
// TreeEntryFinder is a struct for searching through a tree with caching.
type TreeEntryFinder struct {
- objectReader catfile.ObjectReader
- objectInfoReader catfile.ObjectInfoReader
+ objectReader ObjectReader
+ objectInfoReader ObjectInfoReader
treeCache map[revisionPath][]*gitalypb.TreeEntry
}
// NewTreeEntryFinder initializes a TreeEntryFinder with an empty tree cache.
-func NewTreeEntryFinder(objectReader catfile.ObjectReader, objectInfoReader catfile.ObjectInfoReader) *TreeEntryFinder {
+func NewTreeEntryFinder(objectReader ObjectReader, objectInfoReader ObjectInfoReader) *TreeEntryFinder {
return &TreeEntryFinder{
objectReader: objectReader,
objectInfoReader: objectInfoReader,
@@ -42,7 +41,7 @@ func (tef *TreeEntryFinder) FindByRevisionAndPath(ctx context.Context, revision,
if !ok {
var err error
- entries, err = treeEntries(ctx, tef.objectReader, tef.objectInfoReader, revision, dir)
+ entries, err = TreeEntries(ctx, tef.objectReader, tef.objectInfoReader, revision, dir)
if err != nil {
return nil, err
}
@@ -60,8 +59,7 @@ func (tef *TreeEntryFinder) FindByRevisionAndPath(ctx context.Context, revision,
}
const (
- oidSize = sha1.Size
- defaultFlatTreeRecursion = 10
+ oidSize = sha1.Size
)
func extractEntryInfoFromTreeData(treeData io.Reader, commitOid, rootOid, rootPath, oid string) ([]*gitalypb.TreeEntry, error) {
@@ -95,7 +93,7 @@ func extractEntryInfoFromTreeData(treeData io.Reader, commitOid, rootOid, rootPa
return nil, fmt.Errorf("read entry oid: %v", err)
}
- treeEntry, err := newTreeEntry(commitOid, rootOid, rootPath, filename, oidBuf.Bytes(), modeBytes)
+ treeEntry, err := git.NewTreeEntry(commitOid, rootOid, rootPath, filename, oidBuf.Bytes(), modeBytes)
if err != nil {
return nil, fmt.Errorf("new entry info: %v", err)
}
@@ -106,10 +104,11 @@ func extractEntryInfoFromTreeData(treeData io.Reader, commitOid, rootOid, rootPa
return entries, nil
}
-func treeEntries(
+// TreeEntries returns the entries of a tree in given revision and path.
+func TreeEntries(
ctx context.Context,
- objectReader catfile.ObjectReader,
- objectInfoReader catfile.ObjectInfoReader,
+ objectReader ObjectReader,
+ objectInfoReader ObjectInfoReader,
revision, path string,
) (_ []*gitalypb.TreeEntry, returnedErr error) {
if path == "." {
@@ -124,7 +123,7 @@ func treeEntries(
rootTreeInfo, err := objectInfoReader.Info(ctx, git.Revision(revision+"^{tree}"))
if err != nil {
- if catfile.IsNotFound(err) {
+ if IsNotFound(err) {
return nil, nil
}
@@ -134,7 +133,7 @@ func treeEntries(
treeObj, err := objectReader.Object(ctx, git.Revision(fmt.Sprintf("%s:%s", revision, path)))
if err != nil {
- if catfile.IsNotFound(err) {
+ if IsNotFound(err) {
return nil, nil
}
return nil, err
diff --git a/internal/gitaly/service/commit/util.go b/internal/git/tree_entry.go
index 6285bff4f..b5fe8c3a1 100644
--- a/internal/gitaly/service/commit/util.go
+++ b/internal/git/tree_entry.go
@@ -1,4 +1,4 @@
-package commit
+package git
import (
"fmt"
@@ -8,7 +8,8 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
)
-func newTreeEntry(commitOid, rootOid, rootPath string, filename, oidBytes, modeBytes []byte) (*gitalypb.TreeEntry, error) {
+// NewTreeEntry is a helper to construct a gitalypb.TreeEntry from the provided parameters.
+func NewTreeEntry(commitOid, rootOid, rootPath string, filename, oidBytes, modeBytes []byte) (*gitalypb.TreeEntry, error) {
var objectType gitalypb.TreeEntry_EntryType
mode, err := strconv.ParseInt(string(modeBytes), 8, 32)
diff --git a/internal/gitaly/service/blob/get_blobs.go b/internal/gitaly/service/blob/get_blobs.go
index 6d7079b48..5b899ebe7 100644
--- a/internal/gitaly/service/blob/get_blobs.go
+++ b/internal/gitaly/service/blob/get_blobs.go
@@ -6,7 +6,6 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
"gitlab.com/gitlab-org/gitaly/v14/internal/git/catfile"
- "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service/commit"
"gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
"gitlab.com/gitlab-org/gitaly/v14/streamio"
"google.golang.org/grpc/codes"
@@ -27,7 +26,7 @@ func sendGetBlobsResponse(
) error {
ctx := stream.Context()
- tef := commit.NewTreeEntryFinder(objectReader, objectInfoReader)
+ tef := catfile.NewTreeEntryFinder(objectReader, objectInfoReader)
for _, revisionPath := range req.RevisionPaths {
revision := revisionPath.Revision
diff --git a/internal/gitaly/service/commit/tree_entries.go b/internal/gitaly/service/commit/tree_entries.go
index 07604c68a..8002ec7fe 100644
--- a/internal/gitaly/service/commit/tree_entries.go
+++ b/internal/gitaly/service/commit/tree_entries.go
@@ -19,6 +19,10 @@ import (
"google.golang.org/protobuf/proto"
)
+const (
+ defaultFlatTreeRecursion = 10
+)
+
func validateGetTreeEntriesRequest(in *gitalypb.GetTreeEntriesRequest) error {
if err := git.ValidateRevision(in.Revision); err != nil {
return err
@@ -45,7 +49,7 @@ func populateFlatPath(
}
for i := 1; i < defaultFlatTreeRecursion; i++ {
- subEntries, err := treeEntries(ctx, objectReader, objectInfoReader, entry.CommitOid, string(entry.FlatPath))
+ subEntries, err := catfile.TreeEntries(ctx, objectReader, objectInfoReader, entry.CommitOid, string(entry.FlatPath))
if err != nil {
return err
}
@@ -127,7 +131,7 @@ func (s *server) sendTreeEntries(
return fmt.Errorf("converting tree entry OID: %w", err)
}
- treeEntry, err := newTreeEntry(
+ treeEntry, err := git.NewTreeEntry(
revision,
rootTreeInfo.String(),
path,
@@ -154,7 +158,7 @@ func (s *server) sendTreeEntries(
return err
}
- entries, err = treeEntries(ctx, objectReader, objectInfoReader, revision, path)
+ entries, err = catfile.TreeEntries(ctx, objectReader, objectInfoReader, revision, path)
if err != nil {
return err
}
diff --git a/internal/gitaly/service/commit/tree_entry.go b/internal/gitaly/service/commit/tree_entry.go
index 9254e7844..2573fe3c0 100644
--- a/internal/gitaly/service/commit/tree_entry.go
+++ b/internal/gitaly/service/commit/tree_entry.go
@@ -21,7 +21,7 @@ func sendTreeEntry(
) error {
ctx := stream.Context()
- treeEntry, err := NewTreeEntryFinder(objectReader, objectInfoReader).FindByRevisionAndPath(ctx, revision, path)
+ treeEntry, err := catfile.NewTreeEntryFinder(objectReader, objectInfoReader).FindByRevisionAndPath(ctx, revision, path)
if err != nil {
return err
}
diff --git a/internal/gitaly/service/repository/archive.go b/internal/gitaly/service/repository/archive.go
index 123f50a4d..cffd4fb36 100644
--- a/internal/gitaly/service/repository/archive.go
+++ b/internal/gitaly/service/repository/archive.go
@@ -12,7 +12,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/command"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
- "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service/commit"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v14/internal/helper"
"gitlab.com/gitlab-org/gitaly/v14/internal/log"
@@ -151,7 +151,7 @@ func (s *server) validateGetArchivePrecondition(
return err
}
- f := commit.NewTreeEntryFinder(objectReader, objectInfoReader)
+ f := catfile.NewTreeEntryFinder(objectReader, objectInfoReader)
if path != "." {
if ok, err := findGetArchivePath(ctx, f, commitID, path); err != nil {
return err
@@ -171,7 +171,7 @@ func (s *server) validateGetArchivePrecondition(
return nil
}
-func findGetArchivePath(ctx context.Context, f *commit.TreeEntryFinder, commitID, path string) (ok bool, err error) {
+func findGetArchivePath(ctx context.Context, f *catfile.TreeEntryFinder, commitID, path string) (ok bool, err error) {
treeEntry, err := f.FindByRevisionAndPath(ctx, commitID, path)
if err != nil {
return false, err