Skip to content

Commit 5dffba8

Browse files
committed
Return root tree from each commit
Signed-off-by: Javi Fontan <[email protected]>
1 parent 1a26767 commit 5dffba8

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

commit_trees.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ type commitTreesIter struct {
104104
commits object.CommitIter
105105
commit *object.Commit
106106
trees *object.TreeWalker
107-
seen map[plumbing.Hash]bool
108107

109108
// selectors for faster filtering
110109
repos []string
@@ -141,6 +140,7 @@ func (i *commitTreesIter) Next() (sql.Row, error) {
141140
return nil, io.EOF
142141
}
143142

143+
var tree *object.Tree
144144
if i.trees == nil {
145145
commit, err := i.commits.Next()
146146
if err != nil {
@@ -156,7 +156,7 @@ func (i *commitTreesIter) Next() (sql.Row, error) {
156156
return nil, err
157157
}
158158

159-
tree, err := commit.Tree()
159+
tree, err = commit.Tree()
160160
if err != nil {
161161
if s.SkipGitErrors {
162162
continue
@@ -165,11 +165,18 @@ func (i *commitTreesIter) Next() (sql.Row, error) {
165165
return nil, err
166166
}
167167

168-
i.seen = make(map[plumbing.Hash]bool)
169-
i.trees = object.NewTreeWalker(tree, true, i.seen)
168+
i.trees = object.NewTreeWalker(tree, true, make(map[plumbing.Hash]bool))
170169
i.commit = commit
171170
}
172171

172+
if tree != nil {
173+
return sql.NewRow(
174+
i.repo.ID,
175+
i.commit.Hash.String(),
176+
tree.Hash.String(),
177+
), nil
178+
}
179+
173180
_, entry, err := i.trees.Next()
174181
if err != nil {
175182
i.trees.Close()
@@ -192,7 +199,6 @@ func (i *commitTreesIter) Next() (sql.Row, error) {
192199
entry.Hash.String(),
193200
), nil
194201
}
195-
return nil, nil
196202
}
197203

198204
func (i *commitTreesIter) Close() error {

commit_trees_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,30 @@ func TestCommitTreesRowIter(t *testing.T) {
2525
}
2626

2727
expected := []sql.Row{
28+
{"e8d3ffab552895c19b9fcf7aa264d277cde33881", "dbd3641b371024f44d0e469a9c8f5457b0660de1"},
2829
{"e8d3ffab552895c19b9fcf7aa264d277cde33881", "a39771a7651f97faf5c72e08224d857fc35133db"},
2930
{"e8d3ffab552895c19b9fcf7aa264d277cde33881", "5a877e6a906a2743ad6e45d99c1793642aaf8eda"},
3031
{"e8d3ffab552895c19b9fcf7aa264d277cde33881", "586af567d0bb5e771e49bdd9434f5e0fb76d25fa"},
3132

33+
{"6ecf0ef2c2dffb796033e5a02219af86ec6584e5", "a8d315b2b1c615d43042c3a62402b8a54288cf5c"},
3234
{"6ecf0ef2c2dffb796033e5a02219af86ec6584e5", "a39771a7651f97faf5c72e08224d857fc35133db"},
3335
{"6ecf0ef2c2dffb796033e5a02219af86ec6584e5", "5a877e6a906a2743ad6e45d99c1793642aaf8eda"},
3436
{"6ecf0ef2c2dffb796033e5a02219af86ec6584e5", "586af567d0bb5e771e49bdd9434f5e0fb76d25fa"},
3537
{"6ecf0ef2c2dffb796033e5a02219af86ec6584e5", "cf4aa3b38974fb7d81f367c0830f7d78d65ab86b"},
3638

39+
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "fb72698cab7617ac416264415f13224dfd7a165e"},
3740
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "a39771a7651f97faf5c72e08224d857fc35133db"},
3841
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "5a877e6a906a2743ad6e45d99c1793642aaf8eda"},
3942
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "586af567d0bb5e771e49bdd9434f5e0fb76d25fa"},
4043

44+
{"af2d6a6954d532f8ffb47615169c8fdf9d383a1a", "4d081c50e250fa32ea8b1313cf8bb7c2ad7627fd"},
4145
{"af2d6a6954d532f8ffb47615169c8fdf9d383a1a", "5a877e6a906a2743ad6e45d99c1793642aaf8eda"},
46+
47+
{"1669dce138d9b841a518c64b10914d88f5e488ea", "eba74343e2f15d62adedfd8c883ee0262b5c8021"},
48+
{"a5b8b09e2f8fcb0bb99d3ccb0958157b40890d69", "c2d30fa8ef288618f65f6eed6e168e0d514886f4"},
49+
{"b8e471f58bcbca63b07bda20e428190409c2db47", "c2d30fa8ef288618f65f6eed6e168e0d514886f4"},
50+
{"35e85108805c84807bc66a02d91535e1e24b38b9", "8dcef98b1d52143e1e2dbc458ffe38f925786bf2"},
51+
{"b029517f6300c2da0f4b651b8642506cd6aaf45d", "aa9b383c260e1d05fbbf6b30a02914555e20c725"},
4252
}
4353

4454
require.Equal(expected, rows)
@@ -63,6 +73,7 @@ func TestCommitTreesPushdown(t *testing.T) {
6373
),
6474
},
6575
[]sql.Row{
76+
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "fb72698cab7617ac416264415f13224dfd7a165e"},
6677
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "a39771a7651f97faf5c72e08224d857fc35133db"},
6778
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "5a877e6a906a2743ad6e45d99c1793642aaf8eda"},
6879
{"918c48b83bd081e863dbe1b80f8998f058cd8294", "586af567d0bb5e771e49bdd9434f5e0fb76d25fa"},

0 commit comments

Comments
 (0)