diff options
author | zeripath <art27@cantab.net> | 2020-10-02 14:27:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-02 09:27:44 -0400 |
commit | 54dd28f159ea6eac314536a73cf8a9feafccca12 (patch) | |
tree | 1dd1efdbebbeb83cd351b6419b2f57265b7b353b /modules/git/tree_blob.go | |
parent | 86b8c81240a49510417f52b3a75e9304ac37a668 (diff) | |
download | gitea-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.go | 11 |
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 } } |