aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git/tree_blob.go
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-10-02 14:27:44 +0100
committerGitHub <noreply@github.com>2020-10-02 09:27:44 -0400
commit54dd28f159ea6eac314536a73cf8a9feafccca12 (patch)
tree1dd1efdbebbeb83cd351b6419b2f57265b7b353b /modules/git/tree_blob.go
parent86b8c81240a49510417f52b3a75e9304ac37a668 (diff)
downloadgitea-54dd28f159ea6eac314536a73cf8a9feafccca12.tar.gz
gitea-54dd28f159ea6eac314536a73cf8a9feafccca12.zip
Fix 500 on README in submodule (#13006)
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 <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules/git/tree_blob.go')
-rw-r--r--modules/git/tree_blob.go11
1 files changed, 11 insertions, 0 deletions
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
}
}