Invalidate comments when file is shortened (#11882)
* Invalidate comments when file is shortened Fix #10686 Signed-off-by: Andrew Thornton <art27@cantab.net> * handle 1 line Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
parent
ae3cfa8449
commit
48648d1d86
|
@ -10,6 +10,7 @@ import (
|
||||||
"container/list"
|
"container/list"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
@ -505,10 +506,12 @@ func (c *Comment) LoadReview() error {
|
||||||
return c.loadReview(x)
|
return c.loadReview(x)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var notEnoughLines = regexp.MustCompile(`fatal: file .* has only \d+ lines?`)
|
||||||
|
|
||||||
func (c *Comment) checkInvalidation(doer *User, repo *git.Repository, branch string) error {
|
func (c *Comment) checkInvalidation(doer *User, repo *git.Repository, branch string) error {
|
||||||
// FIXME differentiate between previous and proposed line
|
// FIXME differentiate between previous and proposed line
|
||||||
commit, err := repo.LineBlame(branch, repo.Path, c.TreePath, uint(c.UnsignedLine()))
|
commit, err := repo.LineBlame(branch, repo.Path, c.TreePath, uint(c.UnsignedLine()))
|
||||||
if err != nil && strings.Contains(err.Error(), "fatal: no such path") {
|
if err != nil && (strings.Contains(err.Error(), "fatal: no such path") || notEnoughLines.MatchString(err.Error())) {
|
||||||
c.Invalidated = true
|
c.Invalidated = true
|
||||||
return UpdateComment(c, doer)
|
return UpdateComment(c, doer)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue