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:
Diffstat (limited to 'internal/gitaly/service')
-rw-r--r--internal/gitaly/service/objectpool/reduplicate.go11
-rw-r--r--internal/gitaly/service/objectpool/reduplicate_test.go10
2 files changed, 19 insertions, 2 deletions
diff --git a/internal/gitaly/service/objectpool/reduplicate.go b/internal/gitaly/service/objectpool/reduplicate.go
index f2705951f..d96c98dd2 100644
--- a/internal/gitaly/service/objectpool/reduplicate.go
+++ b/internal/gitaly/service/objectpool/reduplicate.go
@@ -15,8 +15,15 @@ func (s *server) ReduplicateRepository(ctx context.Context, req *gitalypb.Redupl
}
cmd, err := s.gitCmdFactory.New(ctx, req.GetRepository(), git.SubCmd{
- Name: "repack",
- Flags: []git.Option{git.Flag{Name: "--quiet"}, git.Flag{Name: "-a"}},
+ Name: "repack",
+ Flags: []git.Option{
+ git.Flag{Name: "--quiet"},
+ git.Flag{Name: "-a"},
+ // This can be removed as soon as we have upstreamed a
+ // `repack.updateServerInfo` config option. See gitlab-org/git#105 for more
+ // details.
+ git.Flag{Name: "-n"},
+ },
})
if err != nil {
return nil, err
diff --git a/internal/gitaly/service/objectpool/reduplicate_test.go b/internal/gitaly/service/objectpool/reduplicate_test.go
index 76a7406d8..721fc6f26 100644
--- a/internal/gitaly/service/objectpool/reduplicate_test.go
+++ b/internal/gitaly/service/objectpool/reduplicate_test.go
@@ -2,6 +2,7 @@ package objectpool
import (
"os"
+ "path/filepath"
"testing"
"github.com/stretchr/testify/require"
@@ -24,6 +25,12 @@ func TestReduplicate(t *testing.T) {
gittest.Exec(t, cfg, "-C", repoPath, "gc")
+ // git-gc(1) invokes git-repack(1), which by defaults generates these files. Manually remove
+ // them so that we can assert further down that repository reduplication doesn't regenerate
+ // those paths.
+ require.NoError(t, os.Remove(filepath.Join(repoPath, "info", "refs")))
+ require.NoError(t, os.Remove(filepath.Join(repoPath, "objects", "info", "packs")))
+
existingObjectID := "55bc176024cfa3baaceb71db584c7e5df900ea65"
// Corrupt the repository to check if the object can't be found
@@ -43,4 +50,7 @@ func TestReduplicate(t *testing.T) {
require.NoError(t, os.RemoveAll(altPath))
gittest.Exec(t, cfg, "-C", repoPath, "cat-file", "-e", existingObjectID)
+
+ require.NoFileExists(t, filepath.Join(repoPath, "info", "refs"))
+ require.NoFileExists(t, filepath.Join(repoPath, "objects", "info", "packs"))
}