From 6362b24a59dc8f9cd12a7ee8f044cc15d26e2f79 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Fri, 19 Feb 2021 08:40:17 +0800
Subject: [PATCH] Fix when a commit not found returned 500 (#14732)

Co-authored-by: Lauris BH <lauris@nix.lv>
---
 modules/git/repo_commit_nogogit.go | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go
index a43fe4b33..0a92de170 100644
--- a/modules/git/repo_commit_nogogit.go
+++ b/modules/git/repo_commit_nogogit.go
@@ -8,6 +8,7 @@ package git
 
 import (
 	"bufio"
+	"errors"
 	"fmt"
 	"io"
 	"io/ioutil"
@@ -70,10 +71,15 @@ func (repo *Repository) getCommit(id SHA1) (*Commit, error) {
 	bufReader := bufio.NewReader(stdoutReader)
 	_, typ, size, err := ReadBatchLine(bufReader)
 	if err != nil {
+		if errors.Is(err, io.EOF) {
+			return nil, ErrNotExist{ID: id.String()}
+		}
 		return nil, err
 	}
 
 	switch typ {
+	case "missing":
+		return nil, ErrNotExist{ID: id.String()}
 	case "tag":
 		// then we need to parse the tag
 		// and load the commit