diff options
Diffstat (limited to 'internal/gitaly/service')
-rw-r--r-- | internal/gitaly/service/objectpool/reduplicate.go | 11 | ||||
-rw-r--r-- | internal/gitaly/service/objectpool/reduplicate_test.go | 10 |
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")) } |