diff options
Diffstat (limited to 'internal/git')
-rw-r--r-- | internal/git/objectpool/fetch.go | 8 | ||||
-rw-r--r-- | internal/git/objectpool/fetch_test.go | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/internal/git/objectpool/fetch.go b/internal/git/objectpool/fetch.go index 710392b43..a5240fbfd 100644 --- a/internal/git/objectpool/fetch.go +++ b/internal/git/objectpool/fetch.go @@ -79,6 +79,14 @@ func (o *ObjectPool) FetchFromOrigin(ctx context.Context, origin *gitalypb.Repos return err } + packRefs, err := git.Command(ctx, o, "pack-refs", "--all") + if err != nil { + return err + } + if err := packRefs.Wait(); err != nil { + return err + } + return repackPool(ctx, o) } diff --git a/internal/git/objectpool/fetch_test.go b/internal/git/objectpool/fetch_test.go index 6b4e94463..674f09375 100644 --- a/internal/git/objectpool/fetch_test.go +++ b/internal/git/objectpool/fetch_test.go @@ -182,6 +182,10 @@ func TestFetchFromOriginRefUpdates(t *testing.T) { for ref, oid := range newRefs { require.Equal(t, oid, resolveRef(t, poolPath, "refs/remotes/origin/"+ref), "look up %q in pool after update", ref) } + + looseRefs := testhelper.MustRunCommand(t, nil, "find", filepath.Join(poolPath, "refs"), "-type", "f") + require.Equal(t, "", string(looseRefs), "there should be no loose refs after the fetch") + } func resolveRef(t *testing.T, repo string, ref string) string { |