]> source.dussan.org Git - gitea.git/commitdiff
Convert plumbing.ErrObjectNotFound to git.ErrNotExist in getCommit (#10862) (#10868)
authorzeripath <art27@cantab.net>
Sun, 29 Mar 2020 16:47:53 +0000 (17:47 +0100)
committerGitHub <noreply@github.com>
Sun, 29 Mar 2020 16:47:53 +0000 (17:47 +0100)
Backport #10862

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
modules/git/repo_commit.go

index 52f2d27703435848e5535a4917fcd2a0cb396984..b7532a6db2d0a2ffc7c1e85ffb0f65eaf9c5315c 100644 (file)
@@ -12,9 +12,9 @@ import (
        "strconv"
        "strings"
 
-       "github.com/mcuadros/go-version"
        "github.com/go-git/go-git/v5/plumbing"
        "github.com/go-git/go-git/v5/plumbing/object"
+       "github.com/mcuadros/go-version"
 )
 
 // GetRefCommitID returns the last commit ID string of given reference (branch or tag).
@@ -94,9 +94,15 @@ func (repo *Repository) getCommit(id SHA1) (*Commit, error) {
        gogitCommit, err := repo.gogitRepo.CommitObject(id)
        if err == plumbing.ErrObjectNotFound {
                tagObject, err = repo.gogitRepo.TagObject(id)
+               if err == plumbing.ErrObjectNotFound {
+                       return nil, ErrNotExist{
+                               ID: id.String(),
+                       }
+               }
                if err == nil {
                        gogitCommit, err = repo.gogitRepo.CommitObject(tagObject.Target)
                }
+               // if we get a plumbing.ErrObjectNotFound here then the repository is broken and it should be 500
        }
        if err != nil {
                return nil, err