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:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2022-10-19 14:44:45 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-10-19 17:02:33 +0300
commit3a87f62eb5228af36dcc084de789e4d1b791140c (patch)
tree30540d1ede2dfbcc676304cb26eac686ef2926b6
parente102cd5a80e6d37835de1b218b8b965c793c6b47 (diff)
git/stats: Refactor `LooseObjects()` to receive a repo executor
We're about to drop the almost-unused `UnpackedObjects()` function in favor of `LooseObjects()`, which in fact is unused outside of our tests right now. In order to easily convert existing callers we thus adapt the function's parameters to receive a `git.RepositoryExecuter()`, which is the same signature as for `UnpackedObjects()`.
-rw-r--r--internal/git/stats/profile.go8
-rw-r--r--internal/git/stats/profile_test.go39
2 files changed, 25 insertions, 22 deletions
diff --git a/internal/git/stats/profile.go b/internal/git/stats/profile.go
index 85c4015f8..f00d24c60 100644
--- a/internal/git/stats/profile.go
+++ b/internal/git/stats/profile.go
@@ -10,7 +10,6 @@ import (
"time"
"gitlab.com/gitlab-org/gitaly/v15/internal/git"
- "gitlab.com/gitlab-org/gitaly/v15/internal/git/repository"
)
// HasBitmap returns whether or not the repository contains an object bitmap.
@@ -61,8 +60,11 @@ func UnpackedObjects(repoPath string) (int64, error) {
}
// LooseObjects returns the number of loose objects that are not in a packfile.
-func LooseObjects(ctx context.Context, gitCmdFactory git.CommandFactory, repository repository.GitRepo) (int64, error) {
- cmd, err := gitCmdFactory.New(ctx, repository, git.SubCmd{Name: "count-objects", Flags: []git.Option{git.Flag{Name: "--verbose"}}})
+func LooseObjects(ctx context.Context, repo git.RepositoryExecutor) (int64, error) {
+ cmd, err := repo.Exec(ctx, git.SubCmd{
+ Name: "count-objects",
+ Flags: []git.Option{git.Flag{Name: "--verbose"}},
+ })
if err != nil {
return 0, err
}
diff --git a/internal/git/stats/profile_test.go b/internal/git/stats/profile_test.go
index 9d1c5ecf3..e0fe5dabb 100644
--- a/internal/git/stats/profile_test.go
+++ b/internal/git/stats/profile_test.go
@@ -11,6 +11,7 @@ import (
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v15/internal/git"
"gitlab.com/gitlab-org/gitaly/v15/internal/git/gittest"
+ "gitlab.com/gitlab-org/gitaly/v15/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v15/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v15/internal/testhelper/testcfg"
)
@@ -19,68 +20,68 @@ func TestRepositoryProfile(t *testing.T) {
ctx := testhelper.Context(t)
cfg := testcfg.Build(t)
- testRepo, testRepoPath := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{
+ repoProto, repoPath := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{
SkipCreationViaService: true,
})
+ repo := localrepo.NewTestRepo(t, cfg, repoProto)
- hasBitmap, err := HasBitmap(testRepoPath)
+ hasBitmap, err := HasBitmap(repoPath)
require.NoError(t, err)
require.False(t, hasBitmap, "repository should not have a bitmap initially")
- unpackedObjects, err := UnpackedObjects(testRepoPath)
+ unpackedObjects, err := UnpackedObjects(repoPath)
require.NoError(t, err)
require.Zero(t, unpackedObjects)
- packfiles, err := GetPackfiles(testRepoPath)
+ packfiles, err := GetPackfiles(repoPath)
require.NoError(t, err)
require.Empty(t, packfiles)
- packfilesCount, err := PackfilesCount(testRepoPath)
+ packfilesCount, err := PackfilesCount(repoPath)
require.NoError(t, err)
require.Zero(t, packfilesCount)
blobs := 10
- blobIDs := gittest.WriteBlobs(t, cfg, testRepoPath, blobs)
+ blobIDs := gittest.WriteBlobs(t, cfg, repoPath, blobs)
- unpackedObjects, err = UnpackedObjects(testRepoPath)
+ unpackedObjects, err = UnpackedObjects(repoPath)
require.NoError(t, err)
require.Equal(t, int64(blobs), unpackedObjects)
- gitCmdFactory := gittest.NewCommandFactory(t, cfg)
- looseObjects, err := LooseObjects(ctx, gitCmdFactory, testRepo)
+ looseObjects, err := LooseObjects(ctx, repo)
require.NoError(t, err)
require.Equal(t, int64(blobs), looseObjects)
for _, blobID := range blobIDs {
- commitID := gittest.WriteCommit(t, cfg, testRepoPath,
+ commitID := gittest.WriteCommit(t, cfg, repoPath,
gittest.WithTreeEntries(gittest.TreeEntry{
Mode: "100644", Path: "blob", OID: git.ObjectID(blobID),
}),
)
- gittest.Exec(t, cfg, "-C", testRepoPath, "update-ref", "refs/heads/"+blobID, commitID.String())
+ gittest.Exec(t, cfg, "-C", repoPath, "update-ref", "refs/heads/"+blobID, commitID.String())
}
// write a loose object
- gittest.WriteBlobs(t, cfg, testRepoPath, 1)
+ gittest.WriteBlobs(t, cfg, repoPath, 1)
- gittest.Exec(t, cfg, "-C", testRepoPath, "repack", "-A", "-b", "-d")
+ gittest.Exec(t, cfg, "-C", repoPath, "repack", "-A", "-b", "-d")
- unpackedObjects, err = UnpackedObjects(testRepoPath)
+ unpackedObjects, err = UnpackedObjects(repoPath)
require.NoError(t, err)
require.Zero(t, unpackedObjects)
- looseObjects, err = LooseObjects(ctx, gitCmdFactory, testRepo)
+ looseObjects, err = LooseObjects(ctx, repo)
require.NoError(t, err)
require.Equal(t, int64(1), looseObjects)
// write another loose object
- blobID := gittest.WriteBlobs(t, cfg, testRepoPath, 1)[0]
+ blobID := gittest.WriteBlobs(t, cfg, repoPath, 1)[0]
// due to OS semantics, ensure that the blob has a timestamp that is after the packfile
theFuture := time.Now().Add(10 * time.Minute)
- require.NoError(t, os.Chtimes(filepath.Join(testRepoPath, "objects", blobID[0:2], blobID[2:]), theFuture, theFuture))
+ require.NoError(t, os.Chtimes(filepath.Join(repoPath, "objects", blobID[0:2], blobID[2:]), theFuture, theFuture))
- unpackedObjects, err = UnpackedObjects(testRepoPath)
+ unpackedObjects, err = UnpackedObjects(repoPath)
require.NoError(t, err)
require.Equal(t, int64(1), unpackedObjects)
- looseObjects, err = LooseObjects(ctx, gitCmdFactory, testRepo)
+ looseObjects, err = LooseObjects(ctx, repo)
require.NoError(t, err)
require.Equal(t, int64(2), looseObjects)
}