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:
authorJacob Vosmaer <jacob@gitlab.com>2019-09-04 15:48:33 +0300
committerZeger-Jan van de Weg <git@zjvandeweg.nl>2019-09-04 15:48:33 +0300
commit094083b323a2d58410cc1941deb4b04eb1ff62b6 (patch)
tree13101910dfe26f9b1782f1134cd54e24d6067d69
parent639ad1a3ab4ae8847f8807c5274f3247300ad728 (diff)
FetchIntoObjectPool: pack refs after fetch
-rw-r--r--changelogs/unreleased/jv-pack-pool-refs.yml5
-rw-r--r--internal/git/objectpool/fetch.go8
-rw-r--r--internal/git/objectpool/fetch_test.go4
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 {