From 96918a442b4aad63bb28ceb767d49b29ba8c1b22 Mon Sep 17 00:00:00 2001 From: techknowlogick Date: Fri, 2 Oct 2020 10:39:14 -0400 Subject: [PATCH] Fix 500 on README in submodule (#13006) (#13016) If a README file is a symlink to a submodule Gitea the view branch page will return a 500. The underlying problem is a missed conversion of an plumbing.ErrObjectNotFound in git/tree_blob.go. Fix #12599 Signed-off-by: Andrew Thornton Co-authored-by: Lunny Xiao Co-authored-by: zeripath Co-authored-by: Lunny Xiao --- modules/git/tree_blob.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/git/tree_blob.go b/modules/git/tree_blob.go index 4c5a80cb36..f9fc6db497 100644 --- a/modules/git/tree_blob.go +++ b/modules/git/tree_blob.go @@ -9,6 +9,7 @@ import ( "path" "strings" + "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/filemode" "github.com/go-git/go-git/v5/plumbing/object" ) @@ -35,6 +36,11 @@ func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error) { if i == len(parts)-1 { entries, err := tree.ListEntries() if err != nil { + if err == plumbing.ErrObjectNotFound { + return nil, ErrNotExist{ + RelPath: relpath, + } + } return nil, err } for _, v := range entries { @@ -45,6 +51,11 @@ func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error) { } else { tree, err = tree.SubTree(name) if err != nil { + if err == plumbing.ErrObjectNotFound { + return nil, ErrNotExist{ + RelPath: relpath, + } + } return nil, err } }