Skip to content

Commit 8bfff3d

Browse files
authored
Merge pull request #167 from erizocosmico/fix/refs-head
gitquery: return HEAD reference on refs table
2 parents 4c5e6fd + 75a2fc2 commit 8bfff3d

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

integration_test.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestIntegration(t *testing.T) {
3838
ON history_idx(r.hash, c.hash) >= 0
3939
INNER JOIN blobs b
4040
ON commit_contains(c.hash, b.hash)
41-
WHERE r.name = 'refs/heads/master'
41+
WHERE r.name = 'HEAD'
4242
GROUP BY c.hash`,
4343
[]sql.Row{
4444
{int32(4), "1669dce138d9b841a518c64b10914d88f5e488ea"},
@@ -51,6 +51,15 @@ func TestIntegration(t *testing.T) {
5151
{int32(3), "b8e471f58bcbca63b07bda20e428190409c2db47"},
5252
},
5353
},
54+
{
55+
`SELECT name FROM refs ORDER BY name`,
56+
[]sql.Row{
57+
{"HEAD"},
58+
{"refs/heads/master"},
59+
{"refs/remotes/origin/branch"},
60+
{"refs/remotes/origin/master"},
61+
},
62+
},
5463
}
5564

5665
for _, tt := range testCases {

references.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ func (referencesTable) Children() []sql.Node {
5555
}
5656

5757
type referenceIter struct {
58+
head *plumbing.Reference
5859
repositoryID string
5960
iter storer.ReferenceIter
6061
}
@@ -65,7 +66,13 @@ func (i *referenceIter) NewIterator(repo *Repository) (RowRepoIter, error) {
6566
return nil, err
6667
}
6768

69+
head, err := repo.Repo.Head()
70+
if err != nil {
71+
return nil, err
72+
}
73+
6874
return &referenceIter{
75+
head: head,
6976
repositoryID: repo.ID,
7077
iter: iter,
7178
}, nil
@@ -78,6 +85,16 @@ func (i *referenceIter) Next() (sql.Row, error) {
7885
)
7986

8087
for {
88+
if i.head != nil {
89+
o = i.head
90+
i.head = nil
91+
return sql.NewRow(
92+
i.repositoryID,
93+
"HEAD",
94+
o.Hash().String(),
95+
), nil
96+
}
97+
8198
o, err = i.iter.Next()
8299
if err != nil {
83100
return nil, err

references_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ func TestReferencesTable_RowIter(t *testing.T) {
4545
require.Nil(err)
4646

4747
expected := []sql.Row{
48+
sql.NewRow("repo", "HEAD", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
4849
sql.NewRow("repo", "refs/heads/branch", "e8d3ffab552895c19b9fcf7aa264d277cde33881"),
4950
sql.NewRow("repo", "refs/heads/master", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
5051
sql.NewRow("repo", "refs/remotes/origin/branch", "e8d3ffab552895c19b9fcf7aa264d277cde33881"),

0 commit comments

Comments
 (0)