diff options
author | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2019-09-04 15:48:33 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2019-09-04 15:48:33 +0300 |
commit | 6f8d218de081302e1c7924506992be6b7803f91d (patch) | |
tree | 13101910dfe26f9b1782f1134cd54e24d6067d69 | |
parent | 639ad1a3ab4ae8847f8807c5274f3247300ad728 (diff) | |
parent | 094083b323a2d58410cc1941deb4b04eb1ff62b6 (diff) |
Merge branch 'jv-pack-pool-refs' into 'master'
FetchIntoObjectPool: pack refs after fetch
See merge request gitlab-org/gitaly!1464
-rw-r--r-- | changelogs/unreleased/jv-pack-pool-refs.yml | 5 | ||||
-rw-r--r-- | internal/git/objectpool/fetch.go | 8 | ||||
-rw-r--r-- | internal/git/objectpool/fetch_test.go | 4 |
3 files changed, 17 insertions, 0 deletions
diff --git a/changelogs/unreleased/jv-pack-pool-refs.yml b/changelogs/unreleased/jv-pack-pool-refs.yml new file mode 100644 index 000000000..c4d4258b2 --- /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 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 { |