From d252e0a522eca0906afe76b90de26ccf60bfae12 Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Fri, 30 Aug 2019 12:39:43 +0200 Subject: [PATCH 1/3] FetchIntoObjectPool: pack refs after fetch --- internal/git/objectpool/fetch.go | 8 ++++++++ internal/git/objectpool/fetch_test.go | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/internal/git/objectpool/fetch.go b/internal/git/objectpool/fetch.go index 710392b43fd..a5240fbfd61 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 6b4e94463d0..ca914bb35ce 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 := string(testhelper.MustRunCommand(t, nil, "find", filepath.Join(poolPath, "refs"), "-type", "f")) + require.Equal(t, "", looseRefs, "there should be no loose refs after the fetch") + } func resolveRef(t *testing.T, repo string, ref string) string { -- GitLab From 6bbf85b44ee145f54581877a21600196447702d7 Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Fri, 30 Aug 2019 12:41:26 +0200 Subject: [PATCH 2/3] changelog --- changelogs/unreleased/jv-pack-pool-refs.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/jv-pack-pool-refs.yml diff --git a/changelogs/unreleased/jv-pack-pool-refs.yml b/changelogs/unreleased/jv-pack-pool-refs.yml new file mode 100644 index 00000000000..c4d4258b230 --- /dev/null +++ b/changelogs/unreleased/jv-pack-pool-refs.yml @@ -0,0 +1,5 @@ +--- +title: 'FetchIntoObjectPool: pack refs after fetch' +merge_request: 1464 +author: +type: performance -- GitLab From 1c7552dbd9fdd8b25a48ae6e358ceaf66c149e63 Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Fri, 30 Aug 2019 12:45:05 +0200 Subject: [PATCH 3/3] shorten line --- internal/git/objectpool/fetch_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/git/objectpool/fetch_test.go b/internal/git/objectpool/fetch_test.go index ca914bb35ce..674f093759d 100644 --- a/internal/git/objectpool/fetch_test.go +++ b/internal/git/objectpool/fetch_test.go @@ -183,8 +183,8 @@ func TestFetchFromOriginRefUpdates(t *testing.T) { require.Equal(t, oid, resolveRef(t, poolPath, "refs/remotes/origin/"+ref), "look up %q in pool after update", ref) } - looseRefs := string(testhelper.MustRunCommand(t, nil, "find", filepath.Join(poolPath, "refs"), "-type", "f")) - require.Equal(t, "", looseRefs, "there should be no loose refs after the fetch") + 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") } -- GitLab