diff options
author | Giteabot <teabot@gitea.io> | 2023-03-08 15:17:31 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-08 15:17:31 -0500 |
commit | 54c674c93644093a1dd693b50c743cdc6120b6a7 (patch) | |
tree | 93f96ef650cad2956e7124320130232da2969fb2 | |
parent | 2ba58fab22737d73e459c40f9ee6fab3c9947d8c (diff) | |
download | gitea-54c674c93644093a1dd693b50c743cdc6120b6a7.tar.gz gitea-54c674c93644093a1dd693b50c743cdc6120b6a7.zip |
Fix panic when getting notes by ref (#23372) (#23377)
Backport #23372
Fix #23357 .
Now the `/repos/{owner}/{repo}/git/notes/{sha}` API supports getting
notes by a ref or sha
(https://try.gitea.io/api/swagger#/repository/repoGetNote). But the
`GetNote` func can only accept commit ID.
https://github.com/go-gitea/gitea/blob/a12f5757372f751d25f9e5ca1f168f6920ded894/modules/git/notes_nogogit.go#L18
So we need to convert the query parameter to commit ID before calling
`GetNote`.
Co-authored-by: Zettat123 <zettat123@gmail.com>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
-rw-r--r-- | routers/api/v1/repo/notes.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/routers/api/v1/repo/notes.go b/routers/api/v1/repo/notes.go index 2d1f3291f8..74969f2cad 100644 --- a/routers/api/v1/repo/notes.go +++ b/routers/api/v1/repo/notes.go @@ -58,8 +58,18 @@ func getNote(ctx *context.APIContext, identifier string) { return } + commitSHA, err := ctx.Repo.GitRepo.ConvertToSHA1(identifier) + if err != nil { + if git.IsErrNotExist(err) { + ctx.NotFound(err) + } else { + ctx.Error(http.StatusInternalServerError, "ConvertToSHA1", err) + } + return + } + var note git.Note - if err := git.GetNote(ctx, ctx.Repo.GitRepo, identifier, ¬e); err != nil { + if err := git.GetNote(ctx, ctx.Repo.GitRepo, commitSHA.String(), ¬e); err != nil { if git.IsErrNotExist(err) { ctx.NotFound(identifier) return |