Skip to content

Commit ce98ced

Browse files
committed
Perf: Traverse commit history instead of reading the packfile
To avoid show orphan commits and improve performance on commits table, instead of read all the objects from each repository and discard commits, we can execute from go-git a git log --all command and traverse commit history, avoiding read a lot of data from disk. Signed-off-by: Antonio Jesus Navarro Perez <[email protected]>
1 parent 58f5f13 commit ce98ced

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

commits.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package gitbase
33
import (
44
"io"
55

6+
git "gopkg.in/src-d/go-git.v4"
67
"gopkg.in/src-d/go-mysql-server.v0/sql"
78

89
"gopkg.in/src-d/go-git.v4/plumbing"
@@ -161,7 +162,10 @@ func (i *commitIter) init() error {
161162
if len(i.hashes) > 0 {
162163
i.iter, err = NewCommitsByHashIter(i.repo, i.hashes)
163164
} else {
164-
i.iter, err = i.repo.CommitObjects()
165+
i.iter, err =
166+
i.repo.Log(&git.LogOptions{
167+
All: true,
168+
})
165169
}
166170

167171
return err
@@ -245,7 +249,10 @@ func NewCommitsByHashIter(
245249
var commitIter object.CommitIter
246250
var err error
247251
if len(hashes) == 0 {
248-
commitIter, err = repo.CommitObjects()
252+
commitIter, err =
253+
repo.Log(&git.LogOptions{
254+
All: true,
255+
})
249256
if err != nil {
250257
return nil, err
251258
}
@@ -333,7 +340,10 @@ func newCommitsKeyValueIter(
333340
return nil, err
334341
}
335342

336-
commits, err := repo.CommitObjects()
343+
commits, err :=
344+
repo.Log(&git.LogOptions{
345+
All: true,
346+
})
337347
if err != nil {
338348
return nil, err
339349
}

0 commit comments

Comments
 (0)