Browse Source
* Show git-notes
* Make git-notes heading text localizable
* Refactor git-notes data fetching to a separate function
* Display the author and time of git notes
* Move note bubble inside the commit bubble
* Revert "Move note bubble inside the commit bubble"
This reverts commit c0951fe0e3
.
* Add test for git-notes
* testing ui
* Polish CSS
* Apply suggestions from code review
Co-Authored-By: Lauris BH <lauris@nix.lv>
tags/v1.9.0-rc1
13 changed files with 146 additions and 1 deletions
@ -0,0 +1,60 @@ |
|||||||
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package git |
||||||
|
|
||||||
|
import ( |
||||||
|
"io/ioutil" |
||||||
|
|
||||||
|
"gopkg.in/src-d/go-git.v4/plumbing" |
||||||
|
) |
||||||
|
|
||||||
|
// NotesRef is the git ref where Gitea will look for git-notes data.
|
||||||
|
// The value ("refs/notes/commits") is the default ref used by git-notes.
|
||||||
|
const NotesRef = "refs/notes/commits" |
||||||
|
|
||||||
|
// Note stores information about a note created using git-notes.
|
||||||
|
type Note struct { |
||||||
|
Message []byte |
||||||
|
Commit *Commit |
||||||
|
} |
||||||
|
|
||||||
|
// GetNote retrieves the git-notes data for a given commit.
|
||||||
|
func GetNote(repo *Repository, commitID string, note *Note) error { |
||||||
|
notes, err := repo.GetCommit(NotesRef) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
entry, err := notes.GetTreeEntryByPath(commitID) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
blob := entry.Blob() |
||||||
|
dataRc, err := blob.DataAsync() |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
defer dataRc.Close() |
||||||
|
d, err := ioutil.ReadAll(dataRc) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
note.Message = d |
||||||
|
|
||||||
|
commit, err := repo.gogitRepo.CommitObject(plumbing.Hash(notes.ID)) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
lastCommits, err := getLastCommitForPaths(commit, "", []string{commitID}) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
note.Commit = convertCommit(lastCommits[commitID]) |
||||||
|
|
||||||
|
return nil |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package git |
||||||
|
|
||||||
|
import ( |
||||||
|
"path/filepath" |
||||||
|
"testing" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func TestGetNotes(t *testing.T) { |
||||||
|
bareRepo1Path := filepath.Join(testReposDir, "repo1_bare") |
||||||
|
bareRepo1, err := OpenRepository(bareRepo1Path) |
||||||
|
assert.NoError(t, err) |
||||||
|
|
||||||
|
note := Note{} |
||||||
|
err = GetNote(bareRepo1, "95bb4d39648ee7e325106df01a621c530863a653", ¬e) |
||||||
|
assert.NoError(t, err) |
||||||
|
assert.Equal(t, []byte("Note contents\n"), note.Message) |
||||||
|
assert.Equal(t, "Vladimir Panteleev", note.Commit.Author.Name) |
||||||
|
} |
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@ |
|||||||
|
ca6b5ddf303169a72d2a2971acde4f6eea194e5c |
Loading…
Reference in new issue