From df4bbcd235cec8708cd0cbdd9bcbdd00f5db4fd5 Mon Sep 17 00:00:00 2001
From: 6543 <6543@obermui.de>
Date: Tue, 6 Oct 2020 02:18:55 +0200
Subject: [PATCH] Fix error create comment on outdated file (#13041)

* FIX

* more specific

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
---
 services/pull/review.go | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/services/pull/review.go b/services/pull/review.go
index 5a77a4da16..09ab3ff567 100644
--- a/services/pull/review.go
+++ b/services/pull/review.go
@@ -8,6 +8,7 @@ package pull
 import (
 	"bytes"
 	"fmt"
+	"regexp"
 	"strings"
 
 	"code.gitea.io/gitea/models"
@@ -104,6 +105,8 @@ func CreateCodeComment(doer *models.User, gitRepo *git.Repository, issue *models
 	return comment, nil
 }
 
+var notEnoughLines = regexp.MustCompile(`exit status 128 - fatal: file .* has only \d+ lines?`)
+
 // createCodeComment creates a plain code comment at the specified line / path
 func createCodeComment(doer *models.User, repo *models.Repository, issue *models.Issue, content, treePath string, line, reviewID int64) (*models.Comment, error) {
 	var commitID, patch string
@@ -127,7 +130,7 @@ func createCodeComment(doer *models.User, repo *models.Repository, issue *models
 		commit, err := gitRepo.LineBlame(pr.GetGitRefName(), gitRepo.Path, treePath, uint(line))
 		if err == nil {
 			commitID = commit.ID.String()
-		} else if !strings.Contains(err.Error(), "exit status 128 - fatal: no such path") {
+		} else if !(strings.Contains(err.Error(), "exit status 128 - fatal: no such path") || notEnoughLines.MatchString(err.Error())) {
 			return nil, fmt.Errorf("LineBlame[%s, %s, %s, %d]: %v", pr.GetGitRefName(), gitRepo.Path, treePath, line, err)
 		}
 	}