diff options
author | nitul1991 <nitul1991@users.noreply.github.com> | 2021-08-11 06:31:40 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 03:01:40 +0200 |
commit | 2d25b7d44bedf8f17cc2b49f39d1cee662b199a5 (patch) | |
tree | 0bdf04eaed29d773408eff5928ce6df238447001 /modules | |
parent | c4d70a032564f610b7215d3d3973943abbc7395f (diff) | |
download | gitea-2d25b7d44bedf8f17cc2b49f39d1cee662b199a5.tar.gz gitea-2d25b7d44bedf8f17cc2b49f39d1cee662b199a5.zip |
Add an api endpoint to fetch git notes (#15373) (#16649)
close #15373
Diffstat (limited to 'modules')
-rw-r--r-- | modules/git/notes_gogit.go | 9 | ||||
-rw-r--r-- | modules/git/notes_nogogit.go | 13 | ||||
-rw-r--r-- | modules/structs/repo_note.go | 11 |
3 files changed, 32 insertions, 1 deletions
diff --git a/modules/git/notes_gogit.go b/modules/git/notes_gogit.go index 702754069b..9da45ca65c 100644 --- a/modules/git/notes_gogit.go +++ b/modules/git/notes_gogit.go @@ -10,19 +10,24 @@ import ( "context" "io/ioutil" + "code.gitea.io/gitea/modules/log" + "github.com/go-git/go-git/v5/plumbing/object" ) // GetNote retrieves the git-notes data for a given commit. func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) error { + log.Trace("Searching for git note corresponding to the commit %q in the repository %q", commitID, repo.Path) notes, err := repo.GetCommit(NotesRef) if err != nil { + log.Error("Unable to get commit from ref %q. Error: %v", NotesRef, err) return err } remainingCommitID := commitID path := "" currentTree := notes.Tree.gogitTree + log.Trace("Found tree with ID %q while searching for git note corresponding to the commit %q", currentTree.Entries[0].Name, commitID) var file *object.File for len(remainingCommitID) > 2 { file, err = currentTree.File(remainingCommitID) @@ -39,6 +44,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) if err == object.ErrDirectoryNotFound { return ErrNotExist{ID: remainingCommitID, RelPath: path} } + log.Error("Unable to find git note corresponding to the commit %q. Error: %v", commitID, err) return err } } @@ -46,12 +52,14 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) blob := file.Blob dataRc, err := blob.Reader() if err != nil { + log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) return err } defer dataRc.Close() d, err := ioutil.ReadAll(dataRc) if err != nil { + log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) return err } note.Message = d @@ -68,6 +76,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) lastCommits, err := GetLastCommitForPaths(ctx, commitNode, "", []string{path}) if err != nil { + log.Error("Unable to get the commit for the path %q. Error: %v", path, err) return err } note.Commit = convertCommit(lastCommits[path]) diff --git a/modules/git/notes_nogogit.go b/modules/git/notes_nogogit.go index 267087a86f..697f998288 100644 --- a/modules/git/notes_nogogit.go +++ b/modules/git/notes_nogogit.go @@ -10,20 +10,26 @@ import ( "context" "io/ioutil" "strings" + + "code.gitea.io/gitea/modules/log" ) // GetNote retrieves the git-notes data for a given commit. func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) error { + log.Trace("Searching for git note corresponding to the commit %q in the repository %q", commitID, repo.Path) notes, err := repo.GetCommit(NotesRef) if err != nil { + log.Error("Unable to get commit from ref %q. Error: %v", NotesRef, err) return err } path := "" tree := ¬es.Tree + log.Trace("Found tree with ID %q while searching for git note corresponding to the commit %q", tree.ID, commitID) var entry *TreeEntry + originalCommitID := commitID for len(commitID) > 2 { entry, err = tree.GetTreeEntryByPath(commitID) if err == nil { @@ -36,12 +42,15 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) commitID = commitID[2:] } if err != nil { + log.Error("Unable to find git note corresponding to the commit %q. Error: %v", originalCommitID, err) return err } } - dataRc, err := entry.Blob().DataAsync() + blob := entry.Blob() + dataRc, err := blob.DataAsync() if err != nil { + log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) return err } closed := false @@ -52,6 +61,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) }() d, err := ioutil.ReadAll(dataRc) if err != nil { + log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) return err } _ = dataRc.Close() @@ -66,6 +76,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) lastCommits, err := GetLastCommitForPaths(ctx, notes, treePath, []string{path}) if err != nil { + log.Error("Unable to get the commit for the path %q. Error: %v", treePath, err) return err } note.Commit = lastCommits[path] diff --git a/modules/structs/repo_note.go b/modules/structs/repo_note.go new file mode 100644 index 0000000000..bddc945a5c --- /dev/null +++ b/modules/structs/repo_note.go @@ -0,0 +1,11 @@ +// Copyright 2021 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 structs + +// Note contains information related to a git note +type Note struct { + Message string `json:"message"` + Commit *Commit `json:"commit"` +} |